讨论:Java到底有没有办法把thread绑定CPU或者虚拟绑定CPU运行?

一头头 2011-05-30 12:09:43
最近和NASA合作关于realtime java和Java path founder的项目。他们在考虑把java搞到下一代导弹上面。当然不是普通的java,不过也差不多哇。

这几天我要做的是实现一种线程的模拟,具体是用一种叫做DES discrete event simulation的东西来模拟。
DES模拟是把线程模拟成event,这个event包含至少2个因素:1)thread itself 2)线程必须被触发的时间 (比如说几分几秒一定要把导弹推进器卸载掉一个)

上面是背景;
下面是问题:

我可以把event按照某一种方法分类 成为若干eventList 比如eventList1 eventList2

然后我想把每个eventList绑定到或者虚拟绑定到某一个CPU,让CPU1只执行eventList1 而从不执行eventList2里面的东西

event 可以看成是一个thread

请问到底有没有什么好办法? 当然我知道所有的thread都是application 级别的封装

我不想改太多的代码 所以如果谁有什么好办法 那就太好了哇 谢谢啊

谢谢谢谢再谢谢
...全文
358 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
一头头 2011-06-20
  • 打赏
  • 举报
回复
其实 我现在的方法是这样的。

1. 在每个realtime thread中增加一个属性 processor 虚拟绑定某一个processor。这个虚拟的意思就是说,感觉这个thread每次执行都在某一个固定的processor上。但其实不是,只是一种simulation。

2. eventList中pop每一个event的时候,advance processor time,设成这个event的schedulingTime。这样一来,对所有的thread来说,他们只能看见他们自己的那个processor,从时间的角度。

In short, this approach is called distributed discrete event simulation using multiple event lists.

基本就这样 汗 献丑了。。。
lgh1117 2011-06-05
  • 打赏
  • 举报
回复
路过,顶。。。雾蒙蒙一片
lxbccsu 2011-06-05
  • 打赏
  • 举报
回复
个人了解是Java中线程的一大好处就是不用知道运行在一个还是多个CPU上,建立了一种透明的编程方法;
其次操作系统的线程调度机制也是非确定性的;

不过楼主的问题中说要隔离执行,可以建立两个SingleThreadExecutor,一个用来执行eventList1中的任务,一个用来执行eventList2中的任务,而且互不相干,每个SingleThreadExecutor中的任务一个接一个的执行完成,这样是否模拟出来像似一个CPU执行一个任务列表;
zhuyongjun 2011-06-03
  • 打赏
  • 举报
回复
太深奥了,完全不懂
AA19900 2011-06-03
  • 打赏
  • 举报
回复
mark
beowulf2005 2011-06-03
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 ticmy 的回复:]

如果jvm使用Green Thread Model,那么就是由jvm自己来调度线程,而不是将java线程对应到操作系统线程,这种模型下,对于操作系统来说,只有一个线程,而对于java应用来说,则有多个线程,就根本没法控制的
[/Quote]
错,Green Thread Model一般会产生是两个操作系统线程。
UPC_思念 2011-06-03
  • 打赏
  • 举报
回复
up
有点深奥。。。
manyroads 2011-06-03
  • 打赏
  • 举报
回复
java 嵌C 嵌汇编 啊啊啊
healer_kx 2011-06-03
  • 打赏
  • 举报
回复
这个根本就不是语言层面的问题,而是硬件和OS的问题。

kokobox 2011-06-03
  • 打赏
  • 举报
回复
到底是怎么一个场景呢? 有点想象不出来呢
mayanyun1986 2011-06-03
  • 打赏
  • 举报
回复
初次见这种问题,建议拜访java之父
aotian16 2011-05-30
  • 打赏
  • 举报
回复
好深奥啊
不过, 个人觉得, 既然你要控制时间, 为什么不让它顺序执行呢?
一头头 2011-05-30
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ticmy 的回复:]

现在通用的java肯定做不到
[/Quote]

我在看别人的论文 我也不知道可以不可以 但是我有个感觉是用某种奇妙的互斥机制或许可以模拟实现

我还需要多想想 或许根本就是瞎想
龙四 2011-05-30
  • 打赏
  • 举报
回复
现在通用的java肯定做不到
  • 打赏
  • 举报
回复
java 最初就是应用在 NASA 的项目上的。
wula0010 2011-05-30
  • 打赏
  • 举报
回复
楼主和NASA合作合作,好厉害,不过把java安装到导弹里面,那么导弹里就得存jre,要多少空间啊,再跑个jvm,要多少内存,......
还是这些都重新做了精简?........
安心逍遥 2011-05-30
  • 打赏
  • 举报
回复
呃,不懂。感觉很深奥啊。帮顶了
jiazimo 2011-05-30
  • 打赏
  • 举报
回复
NASA
帮顶
daf380 2011-05-30
  • 打赏
  • 举报
回复
观而不语
rmouse_2005 2011-05-30
  • 打赏
  • 举报
回复
NASA
楼主厉害
mark一个,关注更新
加载更多回复(6)

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧