解决线程安全的问题,有两种方法,一种是使用同步方法,synchronized关键字,另一种是使用Lock和Condition对象。
一 synchronized同步代码块
创建任意一个对象
synchronized(锁对象) {
可能会产生线程安全问题的代码
}
如下:
![](https://img.haomeiwen.com/i3900156/c9f7a883a0b69e7d.png)
结果线程安全,不过线程安全的代价是运行速度变慢。
使用更为简单的synchronized声明方法。如下
![](https://img.haomeiwen.com/i3900156/3d6864b20df613e1.png)
二 使用Lock接口,以及其中的lock()方法和unlock()方法替代同步,如下:
![](https://img.haomeiwen.com/i3900156/ab3b07e69dd30bab.png)
运行结果如下:
![](https://img.haomeiwen.com/i3900156/62e2ff18ed1615c3.png)
结果表明线程安全。
网友评论