一、线程有以下几种状态:
(1)NEW Thread 对象创建好了,但是还没有调用start方法在系统中创建线程
(2)TERMINATED Thread对象仍然存在,但是系统内部线程已经执行完毕
(3)RUNNABLE 就绪状态
(4)TIMED_WAITING 指定时间阻塞,到达一定时间就自动解除,使用sleep会进入这个状态,使用带有超时的join也会
(5)WAITING 不带时间的阻塞(死等)到达某个程度才会解除,Join或者wait都会进入WAITING
(6)BLOCKED 由于锁竞争,引起的阻塞
二、线程不安全的原因:
1、根本原因:操作系统的线程是抢占式执行和随机调度的,这给线程执行间带来了很多的变数
2、代码结构 代码中多个线程,同时修改同一个变量(出事儿)
(1)一个线程修改一个变量没事
(2)多个线程读取同一个变量没事
(3)多个线程修改同一个变量没事