线程认识与建立方式并发
1,并行与并发工具
并行:同一时刻同时执行方法线程
并发:一个时间段执行的方法对象
2,线程认识blog
启动一个进程时,至少会同时启动一个线程,是一个进程分不一样模块同时执行不一样的工做,继承
通常状况下启动Java程序,main方法是一个主线程启动的同时会启动垃圾回收的线程接口
3,开启线程的方法进程
四种:继承thread类,实现Runnable接口,实现callable接口,线程池get
thread类:重写run方法,建立类对象,start()开启线程。it
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取消执行