黑马程序员技术交流社区

标题: 线程安全问题 [打印本页]

作者: SHISY    时间: 2015-6-14 22:20
标题: 线程安全问题
1.在多个线程同时运行时发生的异常情况统称为线程安全问题。
2.线程安全问题在理想状态下,不容易出现,但一旦出现对软件的影响是非常大的。
---产生原因&前提:
线程随机访问性
有多个线程并行
多个线程有共享数据
多个线程操作了共享数据
---处理方式:
使用java提供的同步机制,使某一线程的完整动作执行完毕,其他线程再进行操作
3.Java同步机制:为解决同步问题而提供的工具
原子性操作:在执行操作时,我们把一个完整动作可以称为一个原子性操作,是一个不可切割的动作。即不可被线程打断的操作。
synchronized 关键字:
--同步代码块格式:
synchronized(锁对象){
//该对象可以是任意对象
需要同步的代码;
                 }
--锁:几个线程需要使用相同的锁对象进行同步操作,使用不同的锁是无法完成同步操作的。
--Synchronized内需要同步的代码即为一个原子性操作。
--同步方法:方法上声明,将所在对象作为默认锁,即this。
--同步静态方法:将方法所在类作为默认所,即XX.class。
同步的特点好处和弊端:
--特点:当一个代码块被同步后,当一个线程访问时,其它线程列队等待。它能保证同一时刻只为一个线程服务,一个线程执行完毕,才能轮到下一个线程执行;
--好处:可以解决多线程访问的并发性问题;
--弊端:因为要使其它线程列队等待,所以会有其它额外的操作,而且这些操作都非常耗时,所以效率比较低;






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2