黑马程序员技术交流社区

标题: 关于线程同步有些疑惑,希望懂得人解答一二 [打印本页]

作者: 孙宏图    时间: 2014-7-9 16:45
标题: 关于线程同步有些疑惑,希望懂得人解答一二
线程同步说的是为了代码不乱序执行,也就是当一段代码执行完之后,再执行其他段代码,这样的话不就跟代码顺序执行一样,那不就和没有用多线程一样。
作者: jzxyhjl    时间: 2014-7-10 11:07
本帖最后由 jzxyhjl 于 2014-7-10 11:10 编辑

说说我自己的理解:
首先多线程线不是只有2个,而是有很多就像 车站买票有很多窗口,也有很多旅客 一样。
其次线程同步并不是单存的按顺序执行,拿售票做例子,不能旅客还没说买去哪的票时,售票员就已经把票给你了,而是旅客先要买票并提供信息,然后售票员才能有卖票的动作。
再有使用线程同步在一个共有资源操作时,避免重复操作,再看售票的例子:现在还剩一张沈阳-北京的车票了,但是同时有3个人在3个不同售票点都想买,这时候这张票就不能同时被3人购买,通过同步就会把票给先确认购买的人,而另外2人就买不到票了。如果这里不是同同步,就会出现3个人都买到了同一张票。。。那么上车的时候就非打起来不可


最后再引用一下百度的内容:
线程同步,可理解为进程或线程A和B一块配合,A执行到一定程度时要依靠B的某个结果,于是停下来,示意B运行;B依言执行,再将结果给A;A再继续操作。所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回,同时其它线程也不能调用这个方法。多线程编程里面,一些敏感数据不允许被多个线程同时访问,此时就使用同步访问技术,保证数据在任何时刻,最多有一个线程访问,以保证数据的完整性。

作者: 醉、倾鯎    时间: 2014-7-10 13:08
同步内只有一条线程执行
作者: sugar    时间: 2014-7-10 17:43
没有线程的时候,函数是顺序执行的;

有线程的时候,每个run()方法是同时执行的;

加上同步 ;保证 run()方法的某几条语句 是顺序执行的;




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