我正在尝试这段代码,我对得到的输出有点困惑/惊讶。我还是 Java 新手,但我知道线程通常应该同时运行。看来我的“printB”线程在开始执行之前等待“printA”线程。我已经多次运行该程序(希望得到两个线程的混合结果,例如:a,a,b,a,b,a ...)但我仍然得到相同的输出(即“A”首先打印,在“B”之前)。为什么会发生这种情况,如何更改代码以开始正常运行?
任何输入/建议将不胜感激。谢谢。
另外,我正在使用 extends Thread 方法尝试相同的代码,但它不起作用。
class PrintChars implements Runnable{
private char charToPrint;
private int times;
public PrintChars(char c, int t){
charToPrint = c;
times = t;
}
public void run(){
for (int i=0; i<times; i++)
System.out.println(charToPrint);
}
public static void main(String[] args){
PrintChars charA = new PrintChars('a', 7);
PrintChars charB = new PrintChars('b', 5);
Thread printA = new Thread(charA);
Thread printB = new Thread(charB);
printA.start();
printB.start();
}
}
扩展下面的 Thread 方法:
class PrintChars extends Thread {
private Char charToPrint;
private int times;
public PrintChars(char c, int t){
charToPrint = c;
times = t;
}
public void run (){
for(int i =0; i<times; i++)
System.out.println(charToPrint);
}
PrintChars printA = new PrintChars('a', 7);
PrintChars printB = new PrintChars('a', 5);
printA.start();
printB.start();
}