作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写一个将运行多线程银行的代码。我首先使用一个程序创建一组线程,然后将它们传递到另一个运行循环来启动它们的线程中。对于应用程序的一部分,我有一个 CPU 密集型方法,基本上在彼此之间运行一系列循环。唯一的问题是,由于某种原因,它没有按照我认为应该的方式产生。这是运行线程的代码:
public void run(){
this.setPriority(MAX_PRIORITY);
int count = 0;
while(count<transactions.length){
int copy = count;
if(transactions[copy] instanceof Jumbler){
System.out.println(copy + " is a jumbler.");
}
else{
System.out.println(copy + " is not a jumbler");
}
transactions[copy].run();
count++;
}
}
然后这是 Jumbler 运行方法:
public void run(){
System.out.println("running jumbler");
Thread.yield();
Thread.currentThread().yield();
try{
Thread.currentThread().sleep(5000);
}catch(InterruptedException e){}
//this.setPriority(MIN_PRIORITY);
System.out.println("still running.");
Thread.yield();
nums = new int[1000];
int i = 0;
do{
Thread.yield();
for(int x=0;x<1000;x++){
Thread.yield();
//System.out.println("in the loop");
nums[x]=(int)(Math.random()*10000)+1;
for(int y = 0;y<1000;y++){
Thread.yield();
//System.out.println("in the the loop");
for(int z = 0;z<100;z++){
Thread.yield();
}
}
}
Thread.yield();
i++;
System.out.println(whichJumble + ": " + i);
}while(i<1000);
}
所以,问题是我希望它屈服,允许 main 方法继续运行更多线程,但它会阻塞并等待 Jumbler 完成(这需要很长时间)。知道为什么会发生这种情况或如何解决它吗?
最佳答案
我认为问题出在主循环中的 transactions[copy].run();
中。这个直接调用 run 方法,而不是在另一个系统线程中。而是使用 transactions[copy].start();
启动线程。
关于Java 线程屈服/饥饿问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5844175/
我对现代JavaScript(ES8)有点陌生。异步产生的首选方法是什么,即使用await在事件循环的某些将来迭代中继续执行脚本?我看到了以下选项: async function yield1() {
我有一个 Duck 类,它有一个生成 block 的 initialize 方法: class Duck def initialize() if block_given? yi
我目前正在学习 F#,我非常喜欢 yield! (yield-bang) 运算符。不仅因为它的名字,当然也因为它的作用。 yield! 运算符基本上允许您从序列表达式中产生序列的所有元素。这对于组合枚
我是一名优秀的程序员,十分优秀!