黑马程序员技术交流社区

标题: 线程同步的疑惑,望指点迷津 [打印本页]

作者: 孙宏图    时间: 2014-7-9 17:13
标题: 线程同步的疑惑,望指点迷津
线程同步说的是为了代码不乱序执行,也就是当一段代码执行完之后,再执行其他段代码,这样的话不就跟代码顺序执行一样,那不就和没有用多线程一样。

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

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

线程同步的作用仅仅是为了保证共享资源的数据安全吗,还有其他方面的原因吗
作者: 吴俊勇    时间: 2014-7-9 19:28
孙宏图 发表于 2014-7-9 18:32
嗯,这是从对共享资源的利用这一方面来说,确实是这样。

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

这个就不太清楚了,但至少现在接触到的线程需要同步都是多个线程访问同一资源才会有
作者: 心者觉也    时间: 2014-7-9 20:51
回头又翻看了一遍多线程
作者: 跑步先生    时间: 2014-7-9 22:56
孙宏图 发表于 2014-7-9 18:32
嗯,这是从对共享资源的利用这一方面来说,确实是这样。

线程同步的关键字为synchronized或者用lock锁,我从关键字中感觉就是为了数据安全啊。




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