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();
     }
}
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();
     } 
     
     
 }