**
多线程
**
一,创建线程的方法
- 继承Thread类,重写run方法
- 实现Runable接口,重写run方法
- 实现Callable接口,重写call方法
Runable接口run方法无返回值值,只能抛出运行司异常,且无法捕获处理
Callable接口call方法有返回值,允许抛出异常,可以捕获异常信息
二,线程的生命周期
- new 新建状态。生成线程对象,无调用start方法,这时线程处于创建状态
- Runable 就绪状态。调用start()方法之后-----》就绪状态
- Running 运行状态。线程调度程序将处于就绪状态的线程设为当前线程进入运行状态----》执行run()中的代码
- Blocked 阻塞状态。线程因为某种原因放弃cpu的使用权,暂时停止运行。
(1) wait()方法 等待。让线程等待某工作的完成
(2) sleep()方法 超时等待。
sleep方法或者I/O请求时----》阻塞状态
sleep状态超时,I/O处理完毕----》就绪状态
唤醒方法:notify(),notifyAll()方法----》就绪状态 - Dead 死亡状态。线程正常执行完毕活线程被提前终止----》线程销毁,释放资源。
多线程
线程池的使用
public class TaskTaskDetailSVImpl implements ITaskTaskDetailSV{
private static final Logger LOGGER = LoggerFactory.getLogger(TaskTaskDetailSVImpl.class);
private ExecutorService executorService = new ThreadPoolExecutor(0, Integer.MAX_VALUE,60L, TimeUnit.SECONDS,new SynchronousQueue<Runnable>(),new NgscsThreadFactory());
public Result saveTaskDe(){
Result result = new Result();
executorService.execute(new Runnable() {
public void run() {
saveTaskDetail();
}
});
result.setReturnMessage("处理完成");
return result;
}
}