Java中如何创建操作线程
在java中提供了一个Thread 类
1.继承Threa类创建线程
在这里每一个线程是独立的逻辑 ,主线程和创建的线程会兵分两路,并发(并行+并发)执行,所有运行结构是一会是“hello Thread”,一会是“hello main”,交替打印,并且“hello Thread”不一定先执行。因此达到了并发编程的效果,能够高效使用cpu多核资源
但当我们把start改成run
这时就没有创建出另一个线程,只有一个主线程,就会在主线程里依次执行代码,打印的结构就是一值循环打印“hello Thread”,永远不会打印到“hello main"。
2.实现接口创建线程
使用Runnable的写法,和直接继承Thread之间的区别,主要就是解耦合
首先明确,创建线程,需要进行的两个关键操作: 1.明确线程要执行的任务
2.调用系统api创建出线程
任务本身,不一定和线程概念相关,我们可以把任务本身给提取出来,此时就可以随时把代码改成使用其他方式来执行这个任务。
3.使用匿名内部类
Thread的匿名内部类
Runnable的匿名内部类
上面这个代码还能简化一些,如下所示:
4.基于lambda表达式(推荐)
创建线程的方法除了上面这几种,还有其他的方法例如基于线程池,基于callable等方法创建线程。