首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在java线程之间放弃控制。

在java线程之间放弃控制。
EN

Stack Overflow用户
提问于 2015-11-24 04:17:03
回答 1查看 952关注 0票数 1

我有两个线程;让我们称它们为主线程和子线程。

子线程运行用户提交的代码,这些代码被检测到以调用我所提供的yield回调,每次命中某个条件时。

子线程有一个包装器对象,它启动它并提供一个方法handOff,这个方法是从主线程调用的。handOff应该暂停主线程的执行,取消子线程的执行。当从子线程调用yield回调时,子线程应该暂停,主线程应该取消暂停。

包装器对象还具有一个killChild方法。下一次在调用handOff之后调用killChild时,子线程应该停止执行。

所以,控制的流程看起来是这样的:

代码语言:javascript
复制
Main:  startChild-->handOff........-->handOff........-->killChild-->handOff-->
Child:                     -->yield..........-->yield...............

其中,-->表示运行的任意代码,而...表示暂停的线程。

它本质上是一个单线程程序,我只需要能够强制用户提交的算法被重入。是的,这相当可怕。

实现这一点的好方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-24 08:59:35

实现这一点的最简单方法就是首先不要使用线程。您仍然可以在不同的方法和类中分离代码。

假设您出于某种原因需要使用线程,那么这可以通过一个简单的Object lock = new Object()以及waitnotifyAll来完成。

线程轮流等待锁对象,然后当它们想要产生/切换时,它们会notifyAll,然后是wait。杀死只是要在对象中设置的标志,当您从wait返回时,检查标志,如果设置了就退出。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33885377

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档