如果有三块内存a b c,一个线程writer循环有次序的往这三块内存中些数据,a->b->c->a->b->c...,然后还有一个线程reader也是有次序地从这三块内存中取数据,这个怎么实现?

解决方案 »

  1.   


    package XueLer;public class TestThreadABC  implements Runnable{

    public static SynchronzedLock lock = new SynchronzedLock();
    public static char  ='A';
    public char name;

    public TestThreadABC(char name){
    this.name = name;
    }

    public char getName(){
    return name;
    } public void run() {
    while(SynchronzedLock.count < SynchronzedLock.total){
    synchronized (lock){
    if(this.getName() == ){
    SynchronzedLock.count ++;
    System.out.println(this.toString());
     = (char)(((-'A')+1)%3+'A');
    }
    }
    }
    }

    public String toString(){
    return "Name : " + name +"    count : " + SynchronzedLock.count;
    }

    public static void main(String [] args) throws InterruptedException{
    Thread thread1 , thread2 , thread3;
    thread1 = new Thread(new TestThreadABC('A'));
    thread2 = new Thread(new TestThreadABC('B'));
    thread3 = new Thread(new TestThreadABC('C'));

    thread1.start();
    thread2.start();
    thread3.start();
    }
    }
    class SynchronzedLock{ public static final int total = 100;
    public static int count = 0;

    }
      

  2.   

    Synchronze 
    楼上方法楼主试了没