A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ╄Tracyぺ 中级黑马   /  2014-5-14 18:21  /  1140 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 ╄Tracyぺ 于 2014-5-23 09:50 编辑

能否解答一下线程的同步与非同步问题

4 个回复

倒序浏览
本帖最后由 lvc 于 2014-5-15 02:30 编辑

线程同步是为了解决多线程共享数据出现的安全问题:
     当多条语句在操作同一个线程共享数据时,一个线程对多条语句只执行了一部分,还没有执行完,另一个线程 参与进来执行。导致共享数据错误。
解决办法:
      就是对多条超做共享数据的语句只能让一个线程执行完,在执行过程中,其他线程不可以参与执行。
回复 使用道具 举报
能否问的更细致一点?
回复 使用道具 举报
多线程不同步的产生原因如下:
1,多个线程在操作共享数据。
2,有多条语句对共享数据进行运算。
原因:这多条语句,在某一个时刻被一个线程执行时,还没有执行完,就被其他线程执行了。

解决多线程同步安全问题的原理如下:
 只要将操作共享数据的语句在某一时段让一个线程执行完,在执行过程中,其他线程不能进来执行就可以解决这个问题。

如何进行多句操作共享数据代码的封装呢?
java中提供了一个解决方式:就是同步代码块。
格式:
synchronized(对象) {  // 任意对象都可以。这个对象就是锁。
        需要被同步的代码;
}

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
线程同步与不同步
1、是访问相同资源,会产生资源不同步问题。
2、需要是多行代码,才会产生资源不同步问题。
3、解决资源不同问题,就是当不同线程访问同一段代码的时候,给该代码添加锁,即可。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马