线程同步中如何使用 synchronized、锁和交互实现主线程与子线程的交替执行?

线程同步中如何使用 synchronized、锁和交互实现主线程与子线程的交替执行?

线程同步中的 synchronized、锁与交互

本问题旨在实现主线程执行 100 次,子线程执行 10 次,交替进行循环执行。

根据代码,主线程和子线程分别在 synchronized (me) 和 this.run 中处于同步块内,其中 me 是主线程中的一个对象,而 this 是子线程中实现 runnable 接口的对象,它们代表不同的同步锁对象。

在主线程中,wait() 和 notify() 方法使用 me 作为锁对象,而在子线程的同步方法中,wait() 和 notify() 方法使用 this 作为锁对象。这意味着主线程和子线程在不同的锁对象上进行等待和通知。

为了实现正确的交替执行,需要使用同一把锁来控制线程之间的交互。将主线程和子线程中的 notify() 方法移动 wait() 方法之前,并确保它们使用相同的锁对象(例如 me ),如下所示:

// 主线程
wait(me);
me.notify();

// 子线程
wait(me); // 注意,此处的锁对象也为me
this.notify();

通过修改代码,主线程和子线程将在同一把锁(me )上进行等待和通知,从而实现预期的交替执行。

以上就是线程同步中如何使用 synchronized、锁和交互实现主线程与子线程的交替执行?的详细内容,更多请关注其它相关文章!