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 add(int v) {
i += v;
System.out.println(i);
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public Lock readLock() {
return readWriteLock.readLock();
}
public Lock writeLock() {
return readWriteLock.writeLock();
}
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 add(int v) {
i += v;
System.out.println(i);
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public Lock readLock() {
return readWriteLock.readLock();
}
public Lock writeLock() {
return readWriteLock.writeLock();
}
}
public class TestMain implements Runnable{
TableControl tc=new TableControl();
public static void main(String args[]){
TestMain tm=new TestMain();
Thread t1 =new Thread(tm);
Thread t2 =new Thread(tm);
t1.start();
t2.start();
}
@Override
public void run() {
tc.writeLock().lock();
tc.add(100);
tc.writeLock().unlock();
}
}