首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在java中模拟线程调度(stackless java?)

在java中模拟线程调度(stackless java?)
EN

Stack Overflow用户
提问于 2012-06-17 01:28:25
回答 3查看 852关注 0票数 3

对于一些学术研究,我需要模拟在单个处理器上运行的多个线程。

我希望能够在我的代码中插入*call_scheduler()*调用,在这个调用中,当前的“线程”将暂停(记住它在代码行中),一些调度函数将决定释放哪个线程。

在python中,这可以使用无堆栈的python很好地实现。有没有替代java的方法?

我可以使用真正的线程和一些消息队列(或管道)来实现它,这将强制一次只运行一个线程-但这是一个丑陋且有问题的解决方案。

EN

回答 3

Stack Overflow用户

发布于 2012-07-02 02:06:36

对于协作用户线程,您可以使用Apache javaflow continuations:http://commons.apache.org/sandbox/javaflow/

我有兴趣知道如何使用这个continuations包实现抢占式调度器

票数 1
EN

Stack Overflow用户

发布于 2012-07-02 02:18:56

像Akka这样的Scala参与者框架可以做到这一点。每个线程处理许多角色,这就是它们如此高效地创建的原因。我建议你看看他们的源代码。

票数 1
EN

Stack Overflow用户

发布于 2012-06-17 01:49:50

你的问题:

我可以使用真正的线程和一些消息队列(或管道) that will force only one thread to run at a time来实现它--但这是一个丑陋且有问题的解决方案

如果您希望一次只运行一个线程,通过以一种更干净的方式控制线程对对象的访问,那么可以使用Semaphores in java.util.concurrent package.

此处的Semaphores sem = new Semaphores(1); // 1将标记为只有一个线程可以访问

使用sem.acquire() to get the key of the object, and when its done, use sem.release(),那么只有另一个线程才能访问这个对象。

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

https://stackoverflow.com/questions/11065582

复制
相关文章

相似问题

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