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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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

3 个回复

倒序浏览
本帖最后由 jzxyhjl 于 2014-7-10 11:10 编辑

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


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

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

加上同步 ;保证 run()方法的某几条语句 是顺序执行的;
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马