多线程学习-线程认识与创建方式,
多线程学习-线程认识与创建方式,
线程认识与创建方式
1,并行与并发
并行:同一时刻同时执行方法
并发:一个时间段执行的方法
2,线程认识
启动一个进程时,至少会同时启动一个线程,是一个进程分不同模块同时执行不同的工作,
一般情况下启动Java程序,main方法是一个主线程启动的同时会启动垃圾回收的线程
3,开启线程的方法
四种:继承thread类,实现Runnable接口,实现callable接口,线程池
thread类:重写run方法,创建类对象,start()开启线程。
Runnable接口:重写run()方法,创建thread对象传入实现了runnable接口的对象,也可同时传入线程名称(可选,有默认),start()开启。
callable接口(依赖futuretask类):FutureTask实现了RunnableFuture接口,RunnableFuture继承Future(动态监控线程,get,isdone,cancel。。)和Runnable接口
重写call()方法,创建FutureTask对象task传入实现callable接口的对象,创建thread对象传入task,也可同时传入线程名,start()开启。
开启后可调用get获取返回值(此方法阻塞主线程)
线程池:一个装线程的容器
executors工具类,帮助创建线程池。
executors.new.....线程类型(),返回线程池对象,
线程池对象.execute方法传入实现了runnable的对象
注意:runnable和callable区别:1.runnable重写run方法,callable重写call方法。2.runnable没有返回值,callable有返回值
3.runnable不能抛出异常,callable可以。4.runnable不能动态监控,callable有工具类futuretask监控。如get获取返回值,cancel取消执行
相关文章
- 暂无相关文章
用户点评