当前位置: 代码迷 >> 综合 >> 一个线程在写,100个线程在读
  详细解决方案

一个线程在写,100个线程在读

热度:94   发布时间:2024-03-07 12:07:11.0

线程启动类

public class ThreadDemo06 {public static void main(String [] args){final MyQueue q = new MyQueue();FutureTask ft = new FutureTask(new Callable(){@Overridepublic Object call() throws Exception {q.write(234);return null;}});new Thread(ft,"writeThread").start();for(int i=1;i<=100;i++){FutureTask ft2 = new FutureTask(new Callable(){@Overridepublic Object call() throws Exception {q.read();return null;}});new Thread(ft2,String.valueOf(i)).start();}}
}

资源类:

import java.util.concurrent.Callable;
import java.util.concurrent.FutureTask;
import java.util.concurrent.locks.ReentrantReadWriteLock;class MyQueue{private Object obj;private ReentrantReadWriteLock rwLock = new ReentrantReadWriteLock();public void read(){rwLock.readLock().lock();try {System.out.println(Thread.currentThread().getName()+"---"+this.obj);} catch (Exception e) {e.printStackTrace();}finally{rwLock.readLock().unlock();}}public void write(Object obj){rwLock.writeLock().lock();try {this.obj=obj;System.out.println(Thread.currentThread().getName()+"----"+this.obj);} catch (Exception e) {e.printStackTrace();}finally{rwLock.writeLock().unlock();}}
}

 

  相关解决方案