1.继承Thread 类(重点)
说明:继承thread类,重写run方法,调用start开启线程
code:
public class TestThread extends Thread {
@Override
public void run(){
//run方法线程体
for (int i = 0; i < 200; i++) {
System.out.println("我在看代码~~");
}
}
public static void main(String[] args) {
TestThread testThread = new TestThread();
testThread.start();
for (int i = 0; i < 200; i++) {
System.out.println("我在学习多线程~~");
}
}
}
2.实现Runnable接口(重点)
实现runnable接口,重写run方法,执行线程需要丢入runnable的实现类,调用start方法
code:
public class TestRunnable implements Runnable {
@Override
public void run(){
//run方法线程体
for (int i = 0; i < 200; i++) {
System.out.println("我在看代码~~");
}
}
public static void main(String[] args) {
TestRunnable testRunnable = new TestRunnable();
new Thread(testRunnable).start();
for (int i = 0; i < 200; i++) {
System.out.println("我在学习多线程~~");
}
}
}
3.实现Callable接口
1.实现Callable接口,需要返回值类型;
2.重写call方法,需要抛出异常
3.创建目标对象
4.创建执行服务:ExecutorService ser = Executors.newFixedThreadPool(1);
5.提交执行:Future
6.获取结果:boolean b = result.get()
7.关闭服务:ser.shutdownNow();
code:
总结:
1.线程开启不一定执行,由CPU调度
2.不建议使用Thread类:避免OOP单继承局限性
3.推荐使用Runnable接口:避免OOP单继承局限性,灵活方便,方便同一个对象被多个线程使用
4.Callable可以定义返回值可以抛出异常
扫描二维码,在手机上阅读!
评论