在java多线程并发编程中,有八大基础核心。考考你:看看都有哪八大基础核心呢?它们分别是:
1.创建线程的方式
2.线程启动
3.线程停止
4.线程生命周期
5.线程相关的方法
6.线程相关的属性
7.线程异常处理
8.线程安全
今天我们从第一个基础核心开始:创建线程的方式
#考考你:
你知道在java编程语言中,有几种创建线程的方式吗?
#参考如下:网友说法、官方文档
网友说法:
官方文档说法:
#说法比较:
在网络上,关于创建线程的方式。主流的说法有四种:继承Thread、实现Runnable、线程池、Callable与Future
在官方文档,关于创建线程的方式。有且仅有两种:继承Thread、实现Runnable
#答案:
在java编程语言中,创建线程的方式,我们以官方文档为准,只有两种。关于说线程池、Callable与Future是项目开发中常用的方式,它们的底层其实还是Runnable。
1 package com.anan.thread.createthread; 2 3 public class ThreadDemo { 4 5 public static void main(String[] args) { 6 // 创建线程对象,并启动 7 Thread t1 = new MyThread(); 8 t1.start(); 9 } 10 } 11 12 /** 13 * 继承Thread方式,创建线程 14 */ 15 class MyThread extends Thread{ 16 17 @Override 18 public void run() { 19 System.out.println("继承Thread方式,创建线程"); 20 } 21 }
执行结果:
1 package com.anan.thread.createthread; 2 3 public class RunnableDemo { 4 5 public static void main(String[] args) { 6 // 创建线程对象,并启动 7 Runnable r1 = new MyRunnable(); 8 Thread t1 = new Thread(r1); 9 10 t1.start(); 11 12 } 13 } 14 15 /** 16 * 实现Runnable接口,创建线程 17 */ 18 class MyRunnable implements Runnable{ 19 20 public void run() { 21 System.out.println("实现Runnable接口,创建线程"); 22 } 23 }
执行结果:
#实际开发中,哪一种创建线程的方式更好?
1.虽然在java编程语言中,有两种创建线程的方式:继承Thread、实现Runnable
2.在实际开发中,推荐使用实现Runnable接口方式,原因有:
2.1.实现Runnable接口方式,可以将线程处理业务,与创建线程分离,从而解耦
2.2.实现Runnable接口方式,扩展性更好,因为在java编程语言中,只能继承一个父类,而可以实现多个接口
2.3.实现Runnable接口方式,配合线程池使用,有更好的资源利用率和性能