线程安全问题表现,原因,解决思想,解决具体的体现如下:
线程安全表现主要是,线程的不同步问题,例如毕老师举得那个售票例子,由于线程不安全,而售出了负的票数,这就是线程安全问题的唯一表现。
原因,就是比如两个线程之间在运行时,互相的争夺CUP的执行权,当一个线程没有执行完,另一个线程就抢先进入,导致出现线程安全隐患。
解决思想是,java为我们提供了同步代码块synchronized,我们有了锁的机制,保证了线程的同步,即结果了线程安全问题,同步代码块,或者同步函数,保证了两个或者多个以上的线程在持有相同锁的情况下,实现了同步,解决了线程安全隐患。
具体体现给你举个简单的例子:
class Single{ private static Single s=null; private Single(){} public static Single getIncetance(){ if(s==null){ synchronized (Single.class) {//此处加了锁,保证了线程的唯一,提高了线程的安全性, if(s==null) s=new Single(); } } return s; } }
|