Java 使用线程按非顺序打印数组内容
无法以非同步方式打印阵列的内容。我希望使用线程打印循环,从静态字符串数组中以非顺序的方式遍历并输出字母“A”、“B”、“C” 这是我的密码:Java 使用线程按非顺序打印数组内容,java,multithreading,loops,Java,Multithreading,Loops,无法以非同步方式打印阵列的内容。我希望使用线程打印循环,从静态字符串数组中以非顺序的方式遍历并输出字母“A”、“B”、“C” 这是我的密码: public class ThreadWithExtends extends Thread { public ThreadWithExtends() { super(); } public void run() { String[] arr = { "A", "B", "C" };
public class ThreadWithExtends extends Thread {
public ThreadWithExtends() {
super();
}
public void run() {
String[] arr = { "A", "B", "C" };
int num = 10;
try {
for (int j = 0; j < num; j++) {
for (int i = 0; i < arr.length; i++) {
sleep((int) (Math.random() * 1000));
System.out.print(arr[i] + " ");
}
}
} catch (InterruptedException e) {
System.out.println("Finished");
}
}
}
我的输出:A B C A B C A B C A B C A B C A B C A B C A B B C A B C
我想要的输出:
cababcaac..
etc,不像上面那样顺序 实际上,您没有并行执行任何代码。您只创建了一个按顺序打印某些语句的线程。您需要创建三个线程来自己打印内容,如下所示:
public class Printer extends Thread {
private String mText;
public Printer(String text) {
mText = text;
}
@Override
public void run() {
int num = 1_000;
for (int i = 0; i < num; i++) {
System.out.print(mText + " ");
}
}
}
现在有三个线程并行运行。现在应该混合指纹了
注意,一般来说,您不应该关心调度程序如何调度线程。它尝试进行优化,效果良好。它可能有它的原因,为什么它安排这样或那样。如果您想告诉调度程序您的首选项,您可以为线程分配优先级。您有一个线程在连续工作……为什么?为什么人们想要线程不确定性的东西?它们不是每天都可以使用的。它们在内心深处的某个地方是确定的。为什么要在意?虽然已经创建了一个线程,但它仍然是一个线程。在运行中,它只不过是顺序执行流。您需要的是在主线程上创建for循环,并创建多个线程来迭代和打印结果。感谢您的输入,请欣赏。输出可能不会与@averageCoder混合。仅仅因为您有多个线程,并不意味着您将获得交错输出,当然它也不会完全交错。
public class Printer extends Thread {
private String mText;
public Printer(String text) {
mText = text;
}
@Override
public void run() {
int num = 1_000;
for (int i = 0; i < num; i++) {
System.out.print(mText + " ");
}
}
}
public static void main(String args[]) {
new Printer("A").start();
new Printer("B").start();
new Printer("C").start();
}