黑马程序员技术交流社区
标题:
多线程会出现安全问题啊?
[打印本页]
作者:
wochaowoliuxing
时间:
2014-6-28 23:08
标题:
多线程会出现安全问题啊?
多线程会出现安全问题啊?大家来交流一下
作者:
歸羽
时间:
2014-6-28 23:53
当一个线程在执行多条语句时,并运算同一个数据时,在执行过程中,其他线程参与进来,并操作了这个数据。导致到了错误数据的产生。
1,多个线程在操作共享数据。
2,有多条语句对共享数据进行运算。
因为cpu执行多条语句,在某一个时刻被一个线程执行时,还没有执行完,就被其他线程执行了。
所以只要将操作共享数据的语句在某一时段让一个线程执行完,在执行过程中,其他线程不能进来执行就可以解决这个问题。
java中提供了一个解决方式:就是同步代码块。
作者:
歸羽
时间:
2014-6-28 23:54
JDK1.5版本升级时,推出一个接口Lock接口。直接将锁封装成了对象。线程进入同步就是具备了锁,执行完,离开同步,就是释放了锁。
在后期对锁的分析过程中,发现,获取锁,或者释放锁的动作应该是锁这个事物更清楚。所以将这些动作定义在了锁当中,并把锁定义成对象。
所以同步是隐示的锁操作,而Lock对象是显示的锁操作,它的出现就替代了同步。
现在锁是指定对象Lock。所以查找等待唤醒机制方式需要通过Lock接口来完成。而Lock接口中并没有直接操作等待唤醒的方法,而是将这些方式又单独封装到了一个对象中。这个对象就是Condition,将Object中的三个方法进行单独的封装。并提供了功能一致的方法 await()、signal()、signalAll()体现新版本对象的好处。
作者:
wochaowoliuxing
时间:
2014-7-3 22:03
歸羽 发表于 2014-6-28 23:53
当一个线程在执行多条语句时,并运算同一个数据时,在执行过程中,其他线程参与进来,并操作了这个数据。导 ...
也就是说同步了就安全了吗
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2