qq_陪Alice度过漫长岁月
2018-03-01 15:36
1.我们所学习多线程不就是为了让多条线程并发在服务器上执行,加快处理某些业务的等待时间吗,可章节4-2中3:06说的观点怎么感觉不对劲呢。
2.再提一个问题,多线程执行的过程中,每一条线程执行的速度效率都不一致才是导致数据被破坏的原因吧
第一个问题:并发时的时刻其实指的是某个很短的时间,当系统只有一个内核时,系统在某个时刻确实只能执行一个线程,大多数系统都用的是时间片轮换算法,就是多个进程在分配到的极短时间片轮流使用CPU,详情可以看看计算机操作系统这类书,都有具体介绍
第二个问题,按照我的理解是这样的,用这个举例吧
正确执行时:
线程1:c=5000,a=5000;a=a+500=5500;c=a
线程2: c=5500;c=c+900=6400,结果是6400
争用时:
线程1:c=5000,a=5000;a=a+500=5500;
线程2:c=5000;c=c+900=5900;
线程1:c=a,结果是5500
线程2与线程1争用资源,导致c损失900;
没有看懂
深入浅出Java多线程
186088 学习 · 464 问题
相似问题