线程同步的缘由和方法

我们知道,使用Runnable方式实现线程可以实现资源共享,但是,依然存在问题,看下面的代码:

当有延迟的时候,可能会造成资源的共享出错。所以我们需要使用同步,以解决此问题。实现同步也有两种方式,使用synchronized代码块和使用synchronized方法。

首先,看第一种方法,使用synchronized代码块:

通过运行可以看到,可以很好的解决问题。同时通过多次运行也可以看到进程间的抢占和切换。

再来看第二种实现方式,使用synchronized方法:

通过运行可以发现,此种方式也可以解决问题。当做到这里的时候,我有了个疑问,使用synchronized方法进行同步,那么run方法也是方法,可不可以将run方法设为同步方法呢。为解决此问题,进行下面的尝试:

通过运行,发现依然可以成功,那么这样做是否有问题呢?synchronized代码块和synchronized方法两种不同的实现同步的方式有何区别呢?以上的代码都是通过实现Runnable接口实现的线程,通过继承Thread实现的线程可否进行同步呢?

你可能感兴趣的:(线程同步)