首页 > 图灵资讯 > 技术篇>正文

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

2024-10-31 14:39:39

线程同步中如何使用 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、锁和交互实现主线程与子线程的交替执行?的详细内容,更多请关注图灵教育其它相关文章!

上一篇 Spring Boot 中同 Controller 不同 URL 方法访问权限问题:如何解决重复方法名引起的 404 错误?
下一篇 返回列表

文章素材均来源于网络,如有侵权,请联系管理员删除。