Java创建线程(二)
(一)Java 中如何创建线程
1.Java提供了三种方法创建线程:
①实现Runnable接口的类;
②继承Thread本身;
③通过Callable和Future创建线程。
2.Thread 和Runnable的区别
①:如果是一个类继承Thread--->不适合资源共享。但是如果实现了Runnable接口--->很容易实现资源共享。
总结:
实现Runnable接口比继承Thread类所具有的优势:
(1.)适合多个相同的程序代码的线程去处理同一个资源。
(2)避免java中单继承的限制。
(3)增加程序的健壮性,代码可以被多个线程共享,代码和数据独立。
(4)线程池只能放入实现Runnable或callable 类线程,不能直接放入继承Thread的类。
3.具体的列子:
① Runnable接口
eg:
,,
②:继承Thread来创建线程。【本质上与实现Runnable实例差不多。】
eg:(其它代码同上)
③:Callable和Future创建线程
-
1. 创建 Callable 接口的实现类,并实现 call() 方法,该 call() 方法将作为线程执行体,并且有返回值。
-
2. 创建 Callable 实现类的实例,使用 FutureTask 类来包装 Callable 对象,该 FutureTask 对象封装了该 Callable 对象的 call() 方法的返回值。
-
3. 使用 FutureTask 对象作为 Thread 对象的 target 创建并启动新线程。
-
4. 调用 FutureTask 对象的 get() 方法来获得子线程执行结束后的返回值。
eg:,