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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 不抛弃不放弃 中级黑马   /  2013-11-15 10:27  /  1335 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 不抛弃不放弃 于 2013-11-15 10:46 编辑

线程同步 是不是只是效果上的,也就是说,比如一个cup,他在执行线程同步的话,是真正意义上的同步呢,还是他在快速的切换,达到同步的假象

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

3 个回复

倒序浏览
对程序来讲就是CPU快速的切换,达到同步的假象。
java多线程执行过程是,是多个线程抢占执行权,谁抢到就先执行,抢不到的就先休息一会,等抢到了在执行。
java多线程访问同一个资源,存在安全问题,就必须加同步就是上锁嘛,一次只能有一个线程访问一个资源,这个线程访问完出来后,别的线程才有资格去访问,不然线程的切换。会造成安全隐患。毕老师用火车上的厕所解释:A上厕所后门反锁,其他人就进不去,等A出来后,其他人在抢占厕所。。某一段代码在这一时候只能被一个程序执行,

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

回复 使用道具 举报
必然是不停的切换。
多核CPU可以多个进程同时执行,
但多个线程是包含在一个进程中的,
这个如果让各个核同时执行是不容易进行数据同步的
回复 使用道具 举报
多线程的目的是多个对象操作同一份数据。
这些操作有不同的业务逻辑,当然也就对数据的操作不同。所以为了避免线程安全问题,会对线程的操作加锁。
这样也就是一个线程操作数据,也就是使用CPU资源时,其他线程只能处于等待状态,也就是没有抢到CPU资源。
所以多线程其实也是CPU在进行快速的切换,达到同步的假象。

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马