java readwritelock 死锁 实例

public class ReadThread implements Runnable{ TableControl tc; public ReadThread(TableControl tc){ this.tc=tc; }; @Override public void run() { tc.readLock().lock(); System.out.println("ReadThread"); tc.get(); tc.readLock().unlock(); }

}

public class WriteThread implements Runnable{ TableControl tc; public WriteThread(TableControl tc){ this.tc=tc; }; @Override public void run() { tc.writeLock().lock(); System.out.println("WriteThread"); tc.add(100); tc.writeLock().unlock(); }}

import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReadWriteLock;import java.util.concurrent.locks.ReentrantReadWriteLock;public class TableControl { private ReadWriteLock readWriteLock = new ReentrantReadWriteLock();; private int i = 0; public void get() { System.out.println(i); writeLock().lock(); System.out.println(System.currentTimeMillis()); add(50); writeLock().unlock(); try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } } public void add(int v) { i += v; System.out.println(i); try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } } public Lock readLock() { return readWriteLock.readLock(); } public Lock writeLock() { return readWriteLock.writeLock(); }}

public class TestMain { public static void main(String args[]){ TableControl tc=new TableControl(); WriteThread wt=new WriteThread(tc); ReadThread rt=new ReadThread(tc); Thread t1 =new Thread(wt); Thread t2 =new Thread(rt); t2.start(); // t1.start(); } }

友谊之花、爱情之树、以及遗憾之泪!

java readwritelock 死锁 实例

相关文章:

你感兴趣的文章:

标签云: