Source Code : Signaling
Java Is Open Source Programming Language You Can Download From Java and Java Libraries From http://www.oracle.com.
Click Here to download
We provide this code related to title for you to solve your developing problem easily. Libraries which is import in this program you can download from http://www.oracle.com.
Click Here or search from google with Libraries Name you get jar file related it
Signaling

public class Signaling extends Object {
private BooleanLock readyLock;
public Signaling(BooleanLock readyLock) {
this.readyLock = readyLock;
Runnable r = new Runnable() {
public void run() {
try {
runWork();
} catch (Exception x) {
// in case ANY exception slips through
x.printStackTrace();
}
}
};
Thread internalThread = new Thread(r, "internal");
internalThread.start();
}
private void runWork() {
try {
print("about to wait for readyLock to be true");
readyLock.waitUntilTrue(0); // 0 - wait forever
print("readyLock is now true");
} catch (InterruptedException x) {
print("interrupted while waiting for readyLock " + "to become true");
}
}
private static void print(String msg) {
String name = Thread.currentThread().getName();
System.err.println(name + ": " + msg);
}
public static void main(String[] args) {
try {
print("creating BooleanLock instance");
BooleanLock ready = new BooleanLock(false);
print("creating Signaling instance");
new Signaling(ready);
print("about to sleep for 3 seconds");
Thread.sleep(3000);
print("about to setValue to true");
ready.setValue(true);
print("ready.isTrue()=" + ready.isTrue());
} catch (InterruptedException x) {
x.printStackTrace();
}
}
}
class BooleanLock extends Object {
private boolean value;
public BooleanLock(boolean initialValue) {
value = initialValue;
}
public BooleanLock() {
this(false);
}
public synchronized void setValue(boolean newValue) {
if (newValue != value) {
value = newValue;
notifyAll();
}
}
public synchronized boolean waitToSetTrue(long msTimeout)
throws InterruptedException {
boolean success = waitUntilFalse(msTimeout);
if (success) {
setValue(true);
}
return success;
}
public synchronized boolean waitToSetFalse(long msTimeout)
throws InterruptedException {
boolean success = waitUntilTrue(msTimeout);
if (success) {
setValue(false);
}
return success;
}
public synchronized boolean isTrue() {
return value;
}
public synchronized boolean isFalse() {
return !value;
}
public synchronized boolean waitUntilTrue(long msTimeout)
throws InterruptedException {
return waitUntilStateIs(true, msTimeout);
}
public synchronized boolean waitUntilFalse(long msTimeout)
throws InterruptedException {
return waitUntilStateIs(false, msTimeout);
}
public synchronized boolean waitUntilStateIs(boolean state, long msTimeout)
throws InterruptedException {
if (msTimeout == 0L) {
while (value != state) {
wait(); // wait indefinitely until notified
}
// condition has finally been met
return true;
}
// only wait for the specified amount of time
long endTime = System.currentTimeMillis() + msTimeout;
long msRemaining = msTimeout;
while ((value != state) && (msRemaining > 0L)) {
wait(msRemaining);
msRemaining = endTime - System.currentTimeMillis();
}
// May have timed out, or may have met value,
// calculate return value.
return (value == state);
}
}
Thank with us