Thread
一、线程的创建及启动
//直接start new Thread().start(); //实现runnable接口 new Thread(new Runnable() { @Override public void run() { } }).start(); //实现future回调 new Thread(new FutureTask<Object>(new Callable<Object>() { @Override public Object call() throws Exception { return null; } })).start(); //线程池工具类 Executors.newCachedThreadPool().execute(new Runnable() { @Override public void run() { } }); //手动设置参数线程池 new ThreadPoolExecutor(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue, threadFactory, rejectedExecutionHandler).execute(new Runnable() { @Override public void run() { } });
二、Thread的中断
Thread thread=new Thread(); //让出一下cpu资源,立刻重新开始竞争 Thread.yield(); //设置中断标记 Thread.currentThread().interrupt(); //等待指定线程执行完毕再继续执行当前线程 try { thread.join(); } catch (InterruptedException e) { //抛出异常会导致中断标记被清除,需要重新设置中断标记 Thread.currentThread().interrupt(); } try { //睡眠,暂停指定时间 Thread.sleep(1000); } catch (InterruptedException e) { //抛出异常会导致中断标记被清除,需要重新设置中断标记 Thread.currentThread().interrupt(); }
//阻塞线程
LockSupport.park();
//释放线程
LockSupport.unpark(thread);
三、线程的状态


四、Deamon线程
在Java虚拟机退出时Daemon线程中的finally块不一定会执行,因此不能依靠finally块中的内容来确保执行关闭或清理资源的逻辑。
-------参考资料:《并发编程的艺术》

浙公网安备 33010602011771号