Java多线程--使用线程的三种方法详解
2018-10-11 12:32
453 查看
版权声明: https://blog.csdn.net/qq_16525279/article/details/83010710
有三种使用线程的方法:
- 实现 Runnable 接口;
- 实现 Callable 接口;
- 继承 Thread 类。
实现 Runnable 和 Callable 接口的类只能当做一个可以在线程中运行的任务,不是真正意义上的线程,因此最后还需要通过 Thread 来调用。可以说任务是通过线程驱动从而执行的。
实现 Runnable 接口
需要实现 run() 方法。
通过 Thread 调用 start() 方法来启动线程。
[code]public class MyRunnable implements Runnable { public void run() { // ... } }
[code]public static void main(String[] args) { MyRunnable instance = new MyRunnable(); Thread thread = new Thread(instance); thread.start(); }
实现 Callable 接口
与 Runnable 相比,Callable 可以有返回值,返回值通过 FutureTask 进行封装。
[code]public class MyCallable implements Callable<Integer> { public Integer call() { return 123; } }
[code]public static void main(String[] args) throws ExecutionException, InterruptedException { MyCallable mc = new MyCallable(); FutureTask<Integer> ft = new FutureTask<>(mc); Thread thread = new Thread(ft); thread.start(); System.out.println(ft.get()); }
继承 Thread 类
同样也是需要实现 run() 方法,因为 Thread 类也实现了 Runable 接口。
当调用 start() 方法启动一个线程时,虚拟机会将该线程放入就绪队列中等待被调度,当一个线程被调度时会执行该线程的 run() 方法。
[code]public class MyThread extends Thread { public void run() { // ... } }
[code]public static void main(String[] args) { MyThread mt = new MyThread(); mt.start(); }
实现接口 VS 继承 Thread
实现接口会更好一些,因为:
- Java 不支持多重继承,因此继承了 Thread 类就无法继承其它类,但是可以实现多个接口;
- 类可能只要求可执行就行,继承整个 Thread 类开销过大。
相关文章推荐
- 七、初学Java多线程:向线程传递数据的三种方法(没感觉三种方法有什么区别?)
- java多线程编程之向线程传递数据的三种方法
- Java多线程:向线程传递数据的三种方法
- 初学Java多线程:向线程传递数据的三种方法
- Java 多线程实现的三种方法,附两个线程执行不同的输出
- JAVA多线程实现方式主要有三种:继承Thread类、实现Runnable接口、使用ExecutorService、Callable、Future实现有返回结果的多线程。其中前两种方式线程执行完后都没
- Java多线程: 向线程传递数据的三种方法(转)
- 【转载】Java多线程,判断其他线程是否结束的三种方法
- 7. 初学Java多线程:向线程传递数据的三种方法
- java多线程二之线程同步的三种方法
- (三) Java多线程详解之线程范围内共享变量及ThreadLocal类使用
- 初学Java多线程:向线程传递数据的三种方法
- Java多线程学习1,使用线程的三种方式
- Java多线程:向线程传递参数的三种方法
- Java多线程-线程关键字、方法详解
- Java 多线程 (PART VII) 使用join()方法保证线程的执行顺序
- java多线程的基本概念与线程的使用方法
- java多线程二之线程同步的三种方法
- Java多线程-线程状态及方法的使用
- Java之多线程interrupt中断线程的三种方法