多线程为什么不同步java运行方法?
我正在做一个关于Java线程的短期课程,在我的一个家庭作业中,他们问我:?为什么不同步run方法?举个例子
我搜索了一下,我认为使用synchronized for run方法是没有用的,至少在一般情况下是没有用的。因为用户不手动调用run方法,所以使用synchronized run创建对象的多个实例时,同步效果不可见
所以,我想知道是否存在其他原因,或者我是否错了
你可以在下面搜索框中键入要查询的问题!
我正在做一个关于Java线程的短期课程,在我的一个家庭作业中,他们问我:?为什么不同步run方法?举个例子
我搜索了一下,我认为使用synchronized for run方法是没有用的,至少在一般情况下是没有用的。因为用户不手动调用run方法,所以使用synchronized run创建对象的多个实例时,同步效果不可见
所以,我想知道是否存在其他原因,或者我是否错了
# 1 楼答案
同步Runnable的run()方法是完全没有意义的,除非您希望在多个线程之间共享Runnable,并且希望序列化这些线程的执行。这基本上是一种矛盾
# 2 楼答案
如果
Runnable
的run
方法是synchronized
,则a)您有许多可运行程序(在这种情况下,不需要同步,因为每个可运行程序都在不同的对象上调用),或者
b)在多个线程中调用一个runnable,但是它们显然不会并行运行,因此无法实现拥有多个线程的目的
# 3 楼答案
您可以在运行时同步方法,但没有问题。我认为这个建议背后的原因当然应该由讲师向你解释
this
上同步相同,这将阻止其他方法调用李>作为反例,一个穷人的未来实现