请教一个java中的同步问题

haitingpu 2010-02-03 04:08:34
如果有三块内存a b c,一个线程writer循环有次序的往这三块内存中些数据,a->b->c->a->b->c...,然后还有一个线程reader也是有次序地从这三块内存中取数据,这个怎么实现?
...全文
145 8 打赏 收藏 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zxj828282 2010-02-03
  • 打赏
  • 举报
回复
toptopt
zxj828282 2010-02-03
  • 打赏
  • 举报
回复
23
yy357510564 2010-02-03
  • 打赏
  • 举报
回复
代码是不是有问题啊 别误导我们新手啊
haitingpu 2010-02-03
  • 打赏
  • 举报
回复
还能写下具体的代码?
bobo415 2010-02-03
  • 打赏
  • 举报
回复
将写跟读的方法都做同步处理下
haitingpu 2010-02-03
  • 打赏
  • 举报
回复
还有没有其他的实现方法,2楼的代码没有看明白
  • 打赏
  • 举报
回复
Synchronze
楼上方法楼主试了没
zhaining522 2010-02-03
  • 打赏
  • 举报
回复

package XueLer;

public class TestThreadABC implements Runnable{

public static SynchronzedLock lock = new SynchronzedLock();
public static char mark ='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() == mark){
SynchronzedLock.count ++;
System.out.println(this.toString());
mark = (char)(((mark-'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;

}

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧