Java多线程
Thread
自定义线程类继承Thread类
重写run()方法,编写线程执行体
创建线程对象,调用start()方法启动线程
//创建线程方式一;继承Thread类,重写run()方法,调用start开启线程 //总结:注意线程的开启不一定立刻执行,由cpu调度执行 public class TestThread extends Thread { @Override public void run() { super.run(); //run方法线程体 for (int i = 0; i < 1000; i++) { System.out.println("我在看代码---"); } } public static void main(String[] args) { //main线程,主线程 //创建一个线程对象 TestThread testThread1=new TestThread(); //调用start()方法开启线程 testThread1.start(); for (int i = 0; i < 1000; i++) { System.out.println("我在学习多线程---"); } } } //创建线程方式一;继承Thread类,重写run()方法,调用start开启线程 //总结:注意线程的开启不一定立刻执行,由cpu调度执行 public class TestThread extends Thread { @Override public void run() { super.run(); //run方法线程体 for (int i = 0; i < 1000; i++) { System.out.println("我在看代码---"); } } public static void main(String[] args) { //main线程,主线程 //创建一个线程对象 TestThread testThread1=new TestThread(); //调用start()方法开启线程 testThread1.start(); for (int i = 0; i < 1000; i++) { System.out.println("我在学习多线程---"); } } }
实现Runnable
定义MyRunnable类实现Runnable接口
实现run()方法,编写线程执行体
创建线程对象,调用start()方法启动线程
//方式2,实现Runnable ,重写run方法,执线程需要丢入Runnable接口实现类,调用start方法 public class TestThread implements Runnable { @Override public void run() { super.run(); //run方法线程体 for (int i = 0; i < 1000; i++) { System.out.println("我在看代码---"); } } public static void main(String[] args) { //main线程,主线程 //创建一个线程对象 TestThread testThread1=new TestThread(); //调用start()方法开启线程 testThread1.start(); for (int i = 0; i < 1000; i++) { System.out.println("我在学习多线程---"); } } } //创建线程方式一;继承Thread类,重写run()方法,调用start开启线程 //总结:注意线程的开启不一定立刻执行,由cpu调度执行 public class TestThread extends Thread { @Override public void run() { super.run(); //run方法线程体 for (int i = 0; i < 1000; i++) { System.out.println("我在看代码---"); } } public static void main(String[] args) { //main线程,主线程 //创建一个线程对象 TestThread testThread1=new TestThread(); new Thread(testThread).start(); for (int i = 0; i < 1000; i++) { System.out.println("我在学习多线程---"); } } }
继承Thread类
子类继承Thread类具备多线程能力
启动线程:子类对象.start()
不建议使用:避免OOP单继承局限性
实现Runnable接口
实现接口Runnable具有多线程能力
启动线程:传入目标对象+Thread对象.start()
推荐使用:避免单继承局限性,灵活方便,方便同一个对象被多个线程使用
实现Callable接口(了解)
1.实现Callable接口,需要返回值
2.重写从call方法,需要抛出异常
3.创建目标对象
4.创建执行服务:ExecutorService=Executors.ThreadPool(1);
5.提交任务:Future<Boolean>result1 = ser.submit(t1);
6.获取结果:boolean r1 =result1.get()
7.关闭服务:ser,shutdownNow();

浙公网安备 33010602011771号