1. 程式人生 > >起三個執行緒依次讀取一個數組的資料,同時只有一個執行緒執行?

起三個執行緒依次讀取一個數組的資料,同時只有一個執行緒執行?

public class ReadString {     private String[] read = {"1","2","3","4","5","6","7","8","9","10"};     public synchronized void read(int id ,int index){         if(index > 9)             return;         System.out.print("Thread :"+id+" read String :"+ read[index]+" \n");     } }

public class ReadThread extends Thread {          private int threadId;     private ReadString reads;     private Object lock;     private final int COUNT = 3;     public static volatile int flag = 0;                  public ReadThread(int id ,ReadString read,Object lock){         this.threadId = id;         this.reads = read;         this.lock = lock;     }

    @Override     public void run() {         // TODO Auto-generated method stub         while(true){             synchronized (lock) {                 if((flag%COUNT) == threadId){                     reads.read(threadId,flag);                     flag++;                     lock.notifyAll();                 } else {                     try {                         lock.wait();                     } catch (InterruptedException e) {                         // TODO Auto-generated catch block                         e.printStackTrace();                     }                 }             }         }     } }

public class TestMain {     public static ReadString read;     public static void main(String[] args){         Object lock = new Object();         read = new ReadString();         new ReadThread(0,read,lock).start();         new ReadThread(1,read,lock).start();         new ReadThread(2,read,lock).start();     }

}