创建的三种方式
继承Thread类
实现Runable接口
实现Callable接口
每个线程都有优先级
1.
自定义线程类继承Tread类
重写run()方法,编写线程知兴替
创建线程对象,调用start()方法启动线程
2
定义MyRunnable类实现Runnable接口
实现run()方法,编写线程执行体
创建线程对象,调用start()方法启动线程
继承Thread类
子类继承Thread类具备多线程能力
启动线程:子类对象. start()
不建议使用:避免OOP单继承局限性
实现Runnable接口
实现接口Runnable具有多线程能力
启动线程:传入目标对象+Thread对象.start()
推荐使用:避免单继承局限性,灵活方便,方便同一个对象被多个线程使
实现Callable接口(了解即可)
1. 实现Callable接口,需要返回值类型
2. 重写call方法,需要抛出异常
3. 创建目标对象
4. 创建执行服务:ExecutorService ser = Executors.newFixedThreadPool(1);
5. 提交执行:Future result1 = ser.submit(t1);
6. 获取结果:boolean r1 = result1.get()
7. 关闭服务:ser.shutdownNow()