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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 孙宏图 中级黑马   /  2014-7-9 17:13  /  1771 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

线程同步说的是为了代码不乱序执行,也就是当一段代码执行完之后,再执行其他段代码,这样的话不就跟代码顺序执行一样,那不就和没有用多线程一样。

8 个回复

倒序浏览
线程同步的目的是为了限制对共享数据的同时操作,这样利于数据的安全性。而且,多线程只是为了模拟程序的并行执行的,而cpu在每个时间片上永远只可能执行一份代码。单线程代码只能顺序的执行,有了多线程cpu就可以通过时间片的切换来执行不同线程的代码,那么,这样对数据的操作就会有不一样的效果。
回复 使用道具 举报
线程同步时是为了让代码按顺序执行,我了解的代码一定会按顺序执行,只不过在多线程中可能多个线程访问同一资源,这个时候由于cpu同一时间只能执行一个线程,会出现数据错误。举一个打印的小例子,当a线程执行run方法时,刚取到值,并没有对count进行操作,cpu切换到线程b,线程b又会重新取一个同样的值。这样就可能打出相同的值
回复 使用道具 举报
alexsoon 发表于 2014-7-9 18:14
线程同步时是为了让代码按顺序执行,我了解的代码一定会按顺序执行,只不过在多线程中可能多个线程访问同一 ...

嗯,这是从对共享资源的利用这一方面来说,确实是这样。
回复 使用道具 举报
跑步先生 发表于 2014-7-9 17:55
线程同步的目的是为了限制对共享数据的同时操作,这样利于数据的安全性。而且,多线程只是为了模拟程序的并 ...

线程同步的作用仅仅是为了保证共享资源的数据安全吗,还有其他方面的原因吗
回复 使用道具 举报
孙宏图 发表于 2014-7-9 18:32
嗯,这是从对共享资源的利用这一方面来说,确实是这样。

不是共不共享的问题,是线程本身就是随机运行,当出现那种极端另一线程插入前一线程的出现分歧的代码块不,就极有可能导致错误
回复 使用道具 举报
孙宏图 发表于 2014-7-9 18:34
线程同步的作用仅仅是为了保证共享资源的数据安全吗,还有其他方面的原因吗 ...

这个就不太清楚了,但至少现在接触到的线程需要同步都是多个线程访问同一资源才会有
回复 使用道具 举报
回头又翻看了一遍多线程
回复 使用道具 举报
孙宏图 发表于 2014-7-9 18:32
嗯,这是从对共享资源的利用这一方面来说,确实是这样。

线程同步的关键字为synchronized或者用lock锁,我从关键字中感觉就是为了数据安全啊。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马