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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 萧萧北 中级黑马   /  2013-6-8 11:59  /  1864 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 萧萧北 于 2013-6-9 08:46 编辑

关于线程同步和并发执行的理解?
我看视频学到集合部分,不同的集合类型有的是线程同步,有的不同步,还有并发执行...
在前面多线程就学过同步,到集合部分又感觉理解的不是很清晰?麻烦各位高手给我讲讲这两个点:
  • 线程同步
  • 并发执行

先谢谢啦!

评分

参与人数 1技术分 +1 收起 理由
刘凯 + 1 赞一个!

查看全部评分

8 个回复

倒序浏览

回帖奖励 +1

多线程的目的就是出现多个线程  一起执行  这种行为叫并发(并行出发的意思)
并发是好的初衷 但是  由于并发会使得并发中运行的多个线程出现访问同一个共享资源的情况
这样如果不采取措施 就会出现数据存取错误的情况
没有办法的情况下:出现了同步的概念   你可以这么理解
本来大家一起并行执行(理想结果)
但是:遇见共享数据之后   不能一起啦 (并发不行)  只能一个一个地执行(锁机制)  这样并行变成了串行  也就是同步机制

集合中的数据如果看成是共享资源的话:
线程访问到这个集合中的数据的话,如果集合内部的代码(java的源代码)有同步的机制, 则多个线程过来的时候,就要看一下锁是不是可用才能访问。
本来是并发执行的线程见到锁(同步)就不得不一个一个执行  显然  效率低了 但是  数据不会出错

有的集合源代码没有设置线程的同步机制 那么  多线程来的时候  就会随意的访问数据 而不用判断锁的情况(因为人家集合的源代码没有设置这个同步机制)
这样并发速度很快   但是 数据也不安全了

所以  毕老师说了  为了效率 最好用非同步机制的  在调用这个集合(看成共享资源)的代码由程序员自行加上锁  对线程进行同步管理

所以  访问数据的速度和访问数据的正确性是一对矛盾的问题   只能折中 不能都要 这样  你的代码里面  有的地方有同步 有的地方没有  没有的地方  就并发了
有的地方  就要一个一个地执行  好像行驶在宽阔的大马路上的五辆并行的轿车突然遇见一个只能允许一次只能通过一辆轿车的窄桥一样  
肩并肩行驶的轿车只能按顺序通过窄桥

评分

参与人数 1技术分 +1 收起 理由
刘凯 + 1 很给力!

查看全部评分

回复 使用道具 举报 1 0
张歆明 发表于 2013-6-8 12:27
多线程的目的就是出现多个线程  一起执行  这种行为叫并发(并行出发的意思)
并发是好的初衷 但是  由于并 ...

讲的很详细啦,简单明了,通俗易懂,不错哦。谢谢啦
回复 使用道具 举报

回帖奖励 +1

楼上写的很详细,帮顶
回复 使用道具 举报
萧萧北 发表于 2013-6-9 08:43
讲的很详细啦,简单明了,通俗易懂,不错哦。谢谢啦

哈哈 不客气哈
回复 使用道具 举报

回帖奖励 +1

楼上说的很详细,果断过来巩固一下:)
回复 使用道具 举报

回帖奖励 +1

楼主的问题很好,也同时解决了我还不懂的问题
沙发 回复的 好详细了 ,受益匪浅,果断收藏起来。。。
回复 使用道具 举报

回帖奖励 +1

通俗易懂!!!赞一个!!
回复 使用道具 举报
一楼总结的非常详细,果断收藏了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马