实现线程的4种方式
1.继承Thread类
2.实现Runable接口
3. Callable接口 + FutureTask类
4.线程池的方式
线程的生命周期
1.新建 new
2.就绪 runnable
3.运行 running
4.阻塞 blocked
5.死亡 dead
常用线程池
1.newCachedThreadPool
创建一个可根据需要创建新线程的线程池,但是在以前构造的线程可用时将重用它们。对于执行
很多短期异步任务的程序而言,这些线程池通常可提高程序性能。调用 execute 将重用以前构造
的线程(如果线程可用)。如果现有线程没有可用的,则创建一个新线程并添加到池中。终止并
从缓存中移除那些已有 60 秒钟未被使用的线程。因此,长时间保持空闲的线程池不会使用任何资
源。
2.newFixedThreadPool
创建一个可重用固定线程数的线程池,以共享的无界队列方式来运行这些线程
3.newScheduledThreadPool 定时执行线程池
4.newSingleThreadExecutor 保持一个线程的线程池
线程相关操作
1.Thread.sleep(1000);
当前thread睡觉,让出资源。(不释放锁)
2.Thread.yield();
当前thread睡觉,让出资源。(不释放锁)
Thread.sleep(0) == Thread.yield();
3.new Object().wait(1000);
4.new Object().notify();
5.new Thread().join();