线程总结
线 程 :
1,不能脱离进程执行
2,线程用来执行代码
3,线程可以同时运行,多个线程可以同时执行代码
cpu : cup 在同一时刻只能执行一段代码
线程1:指令 --> 调度 --> 访问资源
线程2:指令 --> 调度 --> 访问资源
【线程用来执行代码,
执行run方法中代码
线程执行完run方法代码会停止
线程凭运气执行.
多段代码同时执行】
线程的生命周期 : 背
1,新建状态 :
1,继承 Thread 重写run
2,My3 implements Runnable
Runnable ru = new My3();
Thread t = new Thread(ru);
2,就绪状态 :
线程.start();
可以开始执行代码,差cup的执行权限
3,运行状态 :
随机获得了cpu执行权限
正在执行run方法中的代码
时间片(1毫秒)
阻塞状态 :(线程不执行)
1,挂起
sleep(100);
join();
yield()
2,锁池等待
[当前线程]执行加锁的代码时,锁被其他线程拿走了
那么[当前线程]就会去[锁池等待]
当其他线程把加锁的代码执行完毕以后会自动释放锁,
[当前线程]会回到就绪状态.
3,等待池等待
锁对象.wait();
notifyAll();
interrupt();
都是到锁池等待
4,死亡状态 :
run方法执行完毕
stop()
jvm 强制关闭
yield();只会给优先级高的让步
锁池等待:加锁的代码--》进入到锁池等待--》锁还回来
interrupt:
isinterrupted:清空标志位
setDemon(true):
设置守护线程 后台线程
*【多个线程】 操作【同一个数据】
会涉及到线程安全问题