How to Restrict access to shared data one thread at a time in Java - Thread Synchronization
When a data is being shared among different threads, we need to restrict the access of one thread at a time to avoid race conditions.This program shows how to Restrict access to a shared data among different threads in Java by using thread synchronization..
ThreadCreationJava.java
public class Main {
public static void main(String args[]){
TargetClass target = new TargetClass();
MyThread t1 = new MyThread(1,target); //thread id , shared object
MyThread t2 = new MyThread(2, target);
MyThread t3 = new MyThread(3, target);
t1.start();
t2.start();
t3.start();
}
}
MyThread.java
public class MyThread extends Thread {
private int threadId;
private TargetClass target;
public MyThread(int i, TargetClass target2) {
threadId = i; target = target2;
}
@Override
public void run() {
synchronized (target) { // we place shared data here. Now only one thread can access shared data at a time.
try {
sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
target.call(threadId);
}
}
}
TargetClass.java
public class TargetClass {
public void call(int threadId){
System.out.println("Function called from thread " + threadId);
}
}
No comments:
Post a Comment