抢夺cpu带来的不安全问题
产生条件:
资源共享
有线程并发操作共享资源 且涉及写操作
方法:
禁止共享资源–ThreadLocal
禁止多线程并发操作–Syncronized同步代码块
禁止修改–ReadWriteLock
Syncronized代码块使用:
Syncronized(锁对象){
要同步的代码
}
原理:将产生多线程并发安全问题的代码包裹起来,并选择一个锁对象。锁对象可以任意选择,但是多个并发的线程操作的都是同一个锁对象。锁对象没有实际作用,唯一作用是在锁对象标记一个锁状态。在线程执行到同步代码块时,需要先得到锁对象上的锁,才可以进入同步代码块
class Run extends Thread{
public void run() {
synchronized (new Object()) {
System.out.println("看电影");
System.out.println(this.currentThread());
}
}
}