gpt4 book ai didi

java - JAVA程序一次只有1个线程

转载 作者:行者123 更新时间:2023-11-29 05:37:45 24 4
gpt4 key购买 nike

这是我的代码(类):

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com