什么是线程?进程和线程的联系与区别
进程就是一个非常大的工厂,而线程,就是其中的工人,工厂中有很多的工人,工人是能够指挥的最小单位,这就得出了1.线程是操作系统调度的最小单位,
一个工厂中可以有很多个工人,当然有的小的家庭作坊,可能也只有一个工人,这就得出了2.进程包含线程,一个进程里面可以有一个线程,也可以有多个线程 ,
在工厂里,一些重要员工生病不能工作,可能就会导致整个工厂不能工作,但是这个工厂不能工作了,其他的工厂一般不会收到影响这样我们就得出3.进程之间是相互独立的,各自有各自的虚拟空间,同一个进程的多个线程之间,共用一个内存空间以及文件资源,一个进程挂了,其他进程一般没事,但是一个线程挂了,很有可能整个进程崩掉。
搭建工厂的成本是很高的,但是个人工作的成本就更低,所以说4.线程更轻量
哇,线程这么好,那我该怎么创建一个线程呢
众所周知,Java中有这丰富标准库,其中Thread类就是用来表示/操作线程的
方法一:继承法
使用一个类,继承Thread类,并且重写其中的run() 方法从而实现自己想要的代码逻辑
方案二:实现接口法!
实现Runnable接口,再创建Thread是传入Runnable实例
方法三:匿名内部类!
就是前面两种写法的 只不过使用了匿名内部类
方法四:java8新特性! Lambda表达式!
瓦,这么多方法,我应该用什么方法?
通常认为Runnable了这种写法更好,因为接口定义了一种规范,Runnable就是描述任务的接口,至于这个任务怎么执行,谁来执行,就具有了更强的拓展性
所以,猴子真的会写代码吗?