多线程的创建方式:
1)继承 Thread,重写run()方法。
2)实现java.lang.Runnable接口,重写run()方法,然后使用Thread类来包装。
3)实现Callable接口,重写call()方法,然后包装成java.util.concurrent.FutureTask, 再然后包装成Thread。
test类实现callble接口,自动重写call方法,且有返回值,返回值类型必须写包装类。FutureTask类实现了RunnableFuture接口,而RunnableFuture接口继承了Runnable接口和Future接口,也就是FutureTask既是Runnable,也是Future。
继承体系表:
三种方式比较:
线程的生命周期: 线程安全:
synchronized的三种应用方式