标签:extends arp 效率 read 处理机 单位 路径 imp 内核
讲到线程,又不得不提进程了~
进程我们估计是很了解的了,在windows下打开任务管理器,可以发现我们在操作系统上运行的程序都是进程:
进程的定义:
那系统有了进程这么一个概念了,进程已经是可以进行资源分配和调度了,为什么还要线程呢?
为使程序能并发执行,系统必须进行以下的一系列操作:
可以看到进程实现多处理机环境下的进程调度,分派,切换时,
都需要花费较大的时间和空间开销
引入线程主要是为了提高系统的执行效率,减少处理机的空转时间和调度切换的时间,以及便于系统管理。使OS具有更好的并发性
于是我们可以总结出:
线程有3个基本状态:
线程有5种基本操作:
线程的属性:
线程有两个基本类型:
值得注意的是:多线程的存在,不是提高程序的执行速度。其实是为了提高应用程序的使用率,程序的执行其实都是在抢CPU的资源,CPU的执行权。多个进程是在抢这个资源,而其中的某一个进程如果执行路径比较多,就会有更高的几率抢到CPU的执行权
并行:
并发:
由此可见:并行是针对进程的,并发是针对线程的。
上面说了一大堆基础,理解完的话。我们回到Java中,看看Java是如何实现多线程的~
创建多线程有两种方法:
创建一个类,继承Thread,重写run方法
public class MyThread extends Thread { @Override public void run() { for (int x = 0; x < 200; x++) { System.out.println(x); } } }
实现Runnable接口,重写run方法
public class MyRunnable implements Runnable { @Override public void run() { for (int x = 0; x < 100; x++) { System.out.println(x); } } }
不要将run()和start()搞混了~
run()和start()方法区别:
jvm虚拟机的启动是单线程的还是多线程的?
那么,既然有两种方式实现多线程,我们使用哪一种???
一般我们使用实现Runnable接口
标签:extends arp 效率 read 处理机 单位 路径 imp 内核
原文地址:https://www.cnblogs.com/harpoonJava/p/13092844.html