首页 > 图灵资讯 > 技术篇>正文
线程同步中如何使用 synchronized、锁和交互实现主线程与子线程的交替执行?
2024-10-31 14:39:39
线程同步中的 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、锁和交互实现主线程与子线程的交替执行?的详细内容,更多请关注图灵教育其它相关文章!