public class ThreadEx{
// shared variable
private String contant_var;
public ThreadEx() {
new Thread(new ThreadWriter()).start();
new Thread(new ThreadReader()).start();
}
// method to set contant
public synchronized void setContant() {
contant_var = "verändert.";
}
// method to get contant
public synchronized String getContant() {
// read contant
String tmp_con = contant_var;
// set contant to null after read
contant_var = null;
return tmp_con;
}
private class ThreadWriter implements Runnable {
public void run() {
while(true) {
// sleep for preformance reason
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
// check for new contant
String tmp_Co = ThreadEx.this.getContant();
if(tmp_Co != null)
System.out.println("something changed");
else
System.out.println("nothing changed.");
}
}
}
private class ThreadReader implements Runnable {
public void run() {
while(true) {
// sleep for preformance reason
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
// set new contant
ThreadEx.this.setContant();
}
}
}
}