java打印输出元素从数组逐个进入使用多线程和for循环的单独行

时间:2017-01-16 20:32:18

标签: java arrays multithreading

抱歉我缺少英语。我不是母语为英语的人。 今天我学习了线程,现在我正在训练。 我想制作一个程序,使用多线程

将数组中的元素逐个打印成单独的行
   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的元素行)当然,线程应该在逐个打印元素时起作用。

1 个答案:

答案 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();

希望有所帮助