抱歉我缺少英语。我不是母语为英语的人。 今天我学习了线程,现在我正在训练。 我想制作一个程序,使用多线程
将数组中的元素逐个打印成单独的行 package Teeest;
import java.util.Arrays;
public class THREADTEST {
public static void main (String[] args){
int[]a1 ={1,5,7,2,8,1,1,3,6};
int[]a2 = {2,6,1,7,4,8,2,1,7};
Thread2 t1 = new Thread2(a1,5);
Thread2 t2 = new Thread2(a2,10);
t1.thr.start();
t2.thr.start();
t1.thr.interrupt();
t2.thr.interrupt();
}
}
class Thread2 implements Runnable {
Thread thr = new Thread(this);
private int []array;
private int interval;
Thread2(int[] ar, int time) {
array = ar;
interval = time*1000;
}
public void run(){
while(true){
try{
Thread.sleep(interval);
}
catch(InterruptedException e){}
for(int a: array){
System.out.print(array[a]+" ");
}
}
}
}
这是我的代码,我的输出直接打印出整个数组,甚至两个数组也没有分成不同的行。 (我知道我可以使用“\ n”但在这种情况下这不能很好地工作)
但我希望java逐个打印元素并分成两行。我该怎么想?
_____________(来自ar1的元素行) (输入)(单独行) _____________(来自ar2的元素行)当然,线程应该在逐个打印元素时起作用。
答案 0 :(得分:0)
基本上你只需要在一行上输出array1,在另一行上输出array2的输出。 为此,我将结果存储在每个Thread的StringBuilder中。
public void run(){
while(true){
try{
Thread.sleep(interval);
}
catch(InterruptedException e){}
StringBuilder sb = new StringBuilder();
for(int a: array) {
sb.append(array[a] + " ");
}
System.out.println(sb.toString());
}
}
您可以删除此行
Thread thr = new Thread(this);
直接致电
t1.start();
t2.start();
我不理解对
的号召t1.interrupt();
希望有所帮助