package WithSyncLock;
import [Link].*;
import [Link];
import [Link];
public class Client {
public static void main(String[] args) throws Exception{
Count count=new Count();
Lock lock=new ReentrantLock();
Adder ad=new Adder(count,lock);
Subtractor sb=new Subtractor(count,lock);
Thread t1=new Thread(ad);
Thread t2=new Thread(sb);
[Link]();
[Link]();
[Link]();
[Link]();
[Link]([Link]);
}
}
package WithSyncLock;
public class Count {
int value=0;
}
package WithSyncLock;
import [Link];
public class Adder implements Runnable{
private Count count;
private Lock lock;
public Adder(Count count,Lock lock){
[Link]=count;
[Link]=lock;
}
@Override
public void run() {
for(int i=0;i<10;i++){
[Link]();
[Link]=[Link]+i;
[Link]([Link]);
[Link]();
}
}
}
package WithSyncLock;
import [Link];
public class Subtractor implements Runnable{
private Count count;
private Lock lock;
public Subtractor(Count count,Lock lock){
[Link]=count;
[Link]=lock;
}
@Override
public void run() {
for(int i=0;i<10;i++){
[Link]();
[Link]=[Link]-i;
[Link]([Link]);
[Link]();
}
}
}