多线程的三种接口
三种创建方式
-
Thread class 继承 Thread 类(重点)
-
Runnable 接口 实现 Runnable 接口(重点)
-
Callable 接口 实现 Callable 接口(了解)
Thread
-
自定义线程类继承 Thread 类
-
重写 run() 方法,编写线程执行体
-
创建线程对象,调用 start() 方法启动线程
package Thread;
//创建线程方式一:继承Thread类,重写run方法,调用start开启线程
//总结:注意,线程开启不一定立即执行,,由CPU调度执行
public class TestThread1 extends Thread{
Runnable
-
定义MyRunnable类实现Runnable接口
-
实现run()方法,编写线程执行体
-
创建线程对象,调用start()方法启动线程
package Thread;
//创建线程方式2:实现runnable接口,重写run方法,执行线程需要丢入runnable接口实现类,调用start方法
public class TestThread2 implements Runnable {
public void run() {
//run方法线程体
for (int i = 0; i < 800; i++) {
System.out.println("我在看代码---"+i);
}
}
public static void main(String[] args) {
//创建runnable接口的实现类对象
TestThread2 testThread2 = new TestThread2();
//创建一个线程对象,通过线程对象来开启我们的线程,代理
// Thread thread = new Thread();
// thread.start();
new Thread(testThread2).start();
for (int i = 0; i < 2000; i++) {
System.out.println("我在学习多线程---"+i);
}
}
}
小结
-
继承Thread类
-
子类继承Thread类具备多线程能力
-
启动线程:子类对象. start()
-
不建议使用:避免OOP单继承局限性
-
-
实现Runnable接口
-
实现接口Runnable具有多线程能力
-
启动线程:传入目标对象+Thread对象.start()
-
推荐使用:避免单继承局限性,灵活方便,方便同一个对象被多个线程使用
-
实现Callable接口(了解即可)
-
实现Callable接口,需要返回值类型
-
重写call方法,需要抛出异常
-
创建目标对象
-
创建执行服务:ExecutorService ser = Executors.newFixedThreadPool(1);
-
提交执行:Future<Boolean> result1 = ser.submit(t1);
-
获取结果: boolean r1 = result1.get();
-
关闭服务: ser.shutdownNow();
浙公网安备 33010602011771号