首页 > 代码库 > 线程安全问题

线程安全问题

前面的一个例子 多窗口买票实例 存在的线程安全问题描述如下:
       当线程1等待到了 CPU 资源后,执行 run(),判断条件为 true,但是不会立刻执行输出语句(阻塞),此时 CPU 控制权有可能被移交给线程2或线程3,假如真的被移交,那么可能出现输出余票数为-1、-2的情况,为避免这种线程安全问题,有必要实行一种制度来让当前线程执行的每个单次循环都执行完才让出 CPU。

更进一步的描述:
        由于一个线程操作共享数据过程中,在未执行的情况下,另外的的线程参与进来,导致共享数据存在安全问题。因此有必要让一个线程操作共享数据完毕后,其他线程才有机会参与共享数据的操作。

解决办法:
  • Java 的线程同步机制:同步方法、同步代码块
  • 锁(JDK 5.0之后加入的新机制)


线程安全问题