java线程加上同步代码块 这样限制后 不是同一时刻只有一个线程在跑吗
java线程加上同步代码块这样限制后不是同一时刻只有一个线程在跑吗这样不是失去多线程的意义了吗...
java线程加上同步代码块 这样限制后 不是同一时刻只有一个线程在跑吗 这样不是失去多线程的意义了吗
展开
2个回答
展开全部
一般只有需要多个线程共享的变量才需要加同步锁,这样保持了数据的一致性。
从微观上来看,即时不加同步代码块,同一时刻也只有一个线程在跑,只不过它们交替运行,间隔时间几乎可以忽略,所以看上去是同步的。同理加了同步代码块,只是增加了一个线程访问某一块的等待时间,这种等待时间几乎可以忽略不计,但是对数据的一致性来说又是非常重要的。
不知道这么说楼主能不能理解。
从微观上来看,即时不加同步代码块,同一时刻也只有一个线程在跑,只不过它们交替运行,间隔时间几乎可以忽略,所以看上去是同步的。同理加了同步代码块,只是增加了一个线程访问某一块的等待时间,这种等待时间几乎可以忽略不计,但是对数据的一致性来说又是非常重要的。
不知道这么说楼主能不能理解。
更多追问追答
追问
那代码块里的程序 是他等待时间到了再执行其他的线程 还是不考虑他的睡眠结束与否只考虑当前线程执行是否完毕。 另外线程的(同步)是不是对于cup单核还是多核来讲都一样,不同步的话最多可以同时进行当前核数数量的线程
那代码块里的程序 是他等待时间到了再执行其他的线程 还是不考虑他的睡眠结束与否只考虑当前线程执行是否完毕。 另外线程的(同步)是不是对于cup单核还是多核来讲都一样,不同步的话最多可以同时进行当前核数数量的线程
展开全部
java中 synchronized同步处理后,代表该线程是同步的,即多线程访问时,无法同时有两个或以上线程进行访问。具体的原理是,当第一个线程进入该同步代码块之后,会暂时获得同步块的锁,当第二个线程进入时,由于第一个线程并未结束,同步代码块的锁没有释放,所以第二个线程进不来,达到只有一个线程在运行的目的。synchronized同步处理通常用于封装需要共享的可改变的数据,为了让数据更安全所使用的技术。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询