虚拟机中线程的六种状态
新建状态(new) --创建线程对象
就绪状态(RUNNABLE) --调用了Start()开启线程
阻塞状态(BLOCKED) --遇到了锁,无法获得锁对象
等待状态(WAITING) --遇到了wait()方法
计时状态(TIMED_WAITING) --遇到了sleep()方法
结束状态(TERMINATED) --全部代码执行完毕
线程池
1.创建对象池,对象池是空的 ---------------------创建Executors中的静态方法
2.创建线程对象,执行任务,线程对象归还给对象池—submit方法
3.所有任务结束,关闭连接池---------shutdown()方法
Executors.newCachedThreadPool() :创建默认的对象池,最多能有int最大值的条数的进程
Executors.newfixedThreadPool(int i) :创建对象池,参数是表示最多能有几条进程。
自定义对象池: ThreadPoolExecutor对象创建
volatile
强制线程每次使用的时候,都会查看一下共享区域最新的值。
synchronized同步代码块 (强制线程每次使用的时候,都会查看一下共享区域最新的值。【也有这样的功能】)
1.获得线程锁
2. 清空变量副本
3. 拷贝共享变量到最新的值到变量副本中
4. 执行代码
5. 将修改后变量副本中的值赋值给共享数据
6. 释放锁