作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我的代码(类):
package table2thread;
import java.util.logging.Level;
import java.util.logging.Logger;
public class Table2Thread extends Thread {
private int j;
private boolean flag;
Table2Thread(int j0) {
j = j0;
}
public void run() {
if (Thread.currentThread().getName().equals("Thread1")) {
for (int i = 1; i < 11; i++) {
System.out.println(j + "*" + i + "=" + j * i);
flag = true;
try {
Thread.sleep(1000);
} catch (InterruptedException ex) {
Logger.getLogger(Table2Thread.class.getName()).log(Level.SEVERE, null, ex);
}
}
} else if (Thread.currentThread().getName().equals("Thread1") && flag == true) {
for (int i = 1; i < 11; i++) {
System.out.println(j + "*" + i + "=" + j * i);
flag = false;
try {
Thread.sleep(1000);
} catch (InterruptedException ex) {
Logger.getLogger(Table2Thread.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}
}
这是我的主要类(class):
public class Main {
public static void main(String[] args) {
Table2Thread a1 =new Table2Thread(3);
a1.setName("Thread1");
a1.start();
Table2Thread a2 =new Table2Thread(4);
a2.setName("Thread2");
a2.start();
}
}
我一次只需要 1 个线程,而且只有一个唯一线程。首先是 a1,然后是 a2,然后是 a1 和 a2,但是现在当我运行我的代码时,我得到了重复,比如首先 a1 开始然后 a2 然后在 3-4 增量之后 a1 开始并且再次 a1 开始然后 a2 开始并且再次 a2 开始。我尝试了很多不同的东西,但由于我是新手,我无法让它工作。
请帮忙
最佳答案
如果你想使用 boolean 切换标志,你必须检查它不止一次......像这样:
(伪代码)
public static volatile boolean toggle = true;
...
if( isThread1 )
{
for( ... )
{
while( !toggle )
{
Thread.sleep(100);
}
// Do your stuff here
toggle = false;
}
}
else
{
for( ... )
{
while( toggle )
{
Thread.sleep(100);
}
// Do you stuff here
toggle = true;
}
}
您可能需要检查其他条件。例如,如果 a1 的迭代次数与 a2 不同。
我知道这不是完整的工作代码。但由于这是一项作业,我只是想给你一个提示,让你自己解决。
祝你好运!
编辑:我并不是说这是最好的解决方案,而且肯定不是唯一的解决方案。
关于java - JAVA程序一次只有1个线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18864820/
我是一名优秀的程序员,十分优秀!