线程的状态
创建线程的三种方式
- 1、继承Thread类
- 2、实现Runnable接口
- 3、实现Callable接口
- 线程开启不一定立即执行,由cpu调度执行。
继承Thread类
自定义线程类继承Thread类,需要重写run()方法,在run()方法内编写线程执行体。之后创建线程对象调用start()方法启动。
不建议使用,OOP单继承具有局限性。
实现Runnbale接口
自定义类实现Runnable接口,实现run()方法,编写线程执行体,创建类对象并把类对象传入线程对象中,线程对象再调用start()开启线程。(静态代理)
推荐使用,避免了单继承局限性,灵活方便,方便同一个对象被多个线程使用。
实现Callable接口
- 1、需要返回类型
- 2、重写call方法,需要抛出异常
- 3、创建目标对象
- 4、创建执行服务:ExecutorService ser=Executors.newFixedThreadPool(n);
- 5、提交执行:Future result1=ser.submit(t1);
- 6、获取结果:boolean r1=result1.get();
- 7、关闭服务:ser.shutdowmNow();
Callable的好处: - 1、可以定义返回值
- 2、可以抛出异常
线程的一些方法
其中线程中断方法一般使用标志位来正常退出线程。
线程sleep
线程yield(礼让)
线程join(插入)
线程State(状态)