/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
/**
* Created by jigar.joshi on 8/27/14.
*/
import java.util.Scanner;
private boolean done = false;
private volatile boolean isRead = true;
public boolean isRead() {
return isRead;
}
public void setRead(boolean isRead) {
this.isRead = isRead;
}
public void run() {
while (!isDone()) {
while (isRead()) {
System.
out.
println("Please enter the advertisement message to be displayed (enter 'n' to exit):"); Scanner sc2
= new Scanner
(System.
in); message = sc2.nextLine();
if (message.equalsIgnoreCase("n")) {
done = true;
System.
out.
println("User Stopped the Message Output"); setRead(false);
System.
out.
println("Terminating"); continue;
}
setRead(false);
}
while (!(isInterrupted())) {
try {
System.
out.
print("** " + message
+ " **"); System.
out.
println("Exception caught: " + e.
getMessage()); done = false;
break;
}
}
}
}// end of 'run()' ..
/**
* @return the done
*/
public boolean isDone() {
return done;
}
public static void main
(String ar
[]) { IdeOne advt = new IdeOne();
advt.start();
Scanner sc
= new Scanner
(System.
in); while (true) {
while (!advt.isRead()) {
System.
out.
println("main listening"); if (str.equals("\n")) {
System.
out.
println("new line detected"); advt.interrupt();
}
advt.setRead(true);
}
}
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KLyoqCiAqIENyZWF0ZWQgYnkgamlnYXIuam9zaGkgb24gOC8yNy8xNC4KICovCgppbXBvcnQgamF2YS51dGlsLlNjYW5uZXI7CgpjbGFzcyBJZGVPbmUgZXh0ZW5kcyBUaHJlYWQgewogICAgcHJpdmF0ZSBib29sZWFuIGRvbmUgPSBmYWxzZTsKICAgIFN0cmluZyBtZXNzYWdlID0gIiI7CiAgICBwcml2YXRlIHZvbGF0aWxlIGJvb2xlYW4gaXNSZWFkID0gdHJ1ZTsKCiAgICBwdWJsaWMgYm9vbGVhbiBpc1JlYWQoKSB7CiAgICAgICAgcmV0dXJuIGlzUmVhZDsKICAgIH0KCiAgICBwdWJsaWMgdm9pZCBzZXRSZWFkKGJvb2xlYW4gaXNSZWFkKSB7CiAgICAgICAgdGhpcy5pc1JlYWQgPSBpc1JlYWQ7CiAgICB9CgogICAgcHVibGljIHZvaWQgcnVuKCkgewogICAgICAgIHdoaWxlICghaXNEb25lKCkpIHsKICAgICAgICAgICAgd2hpbGUgKGlzUmVhZCgpKSB7CiAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlBsZWFzZSBlbnRlciB0aGUgYWR2ZXJ0aXNlbWVudCBtZXNzYWdlIHRvIGJlIGRpc3BsYXllZCAoZW50ZXIgJ24nIHRvIGV4aXQpOiIpOwogICAgICAgICAgICAgICAgU2Nhbm5lciBzYzIgPSBuZXcgU2Nhbm5lcihTeXN0ZW0uaW4pOwogICAgICAgICAgICAgICAgbWVzc2FnZSA9IHNjMi5uZXh0TGluZSgpOwogICAgICAgICAgICAgICAgaWYgKG1lc3NhZ2UuZXF1YWxzSWdub3JlQ2FzZSgibiIpKSB7CiAgICAgICAgICAgICAgICAgICAgZG9uZSA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJVc2VyIFN0b3BwZWQgdGhlIE1lc3NhZ2UgT3V0cHV0Iik7CiAgICAgICAgICAgICAgICAgICAgc2V0UmVhZChmYWxzZSk7CiAgICAgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJUZXJtaW5hdGluZyIpOwogICAgICAgICAgICAgICAgICAgIFN5c3RlbS5leGl0KDApOwogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgc2V0UmVhZChmYWxzZSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgd2hpbGUgKCEoaXNJbnRlcnJ1cHRlZCgpKSkgewogICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCIqKiAiICsgbWVzc2FnZSArICIgKioiKTsKICAgICAgICAgICAgICAgICAgICBUaHJlYWQuc2xlZXAoMTAwMCk7CiAgICAgICAgICAgICAgICB9IGNhdGNoIChJbnRlcnJ1cHRlZEV4Y2VwdGlvbiBlKSB7CiAgICAgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJFeGNlcHRpb24gY2F1Z2h0OiAiICsgZS5nZXRNZXNzYWdlKCkpOwogICAgICAgICAgICAgICAgICAgIGRvbmUgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICB9Ly8gZW5kIG9mICdydW4oKScgLi4KCiAgICAvKioKICAgICAqIEByZXR1cm4gdGhlIGRvbmUKICAgICAqLwogICAgcHVibGljIGJvb2xlYW4gaXNEb25lKCkgewogICAgICAgIHJldHVybiBkb25lOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZyBhcltdKSB7CiAgICAgICAgSWRlT25lIGFkdnQgPSBuZXcgSWRlT25lKCk7CiAgICAgICAgYWR2dC5zdGFydCgpOwogICAgICAgIFNjYW5uZXIgc2MgPSBuZXcgU2Nhbm5lcihTeXN0ZW0uaW4pOwogICAgICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgICAgIHdoaWxlICghYWR2dC5pc1JlYWQoKSkgewogICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJtYWluIGxpc3RlbmluZyIpOwogICAgICAgICAgICAgICAgU3RyaW5nIHN0ciA9IHNjLm5leHRMaW5lKCk7CiAgICAgICAgICAgICAgICBpZiAoc3RyLmVxdWFscygiXG4iKSkgewogICAgICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigibmV3IGxpbmUgZGV0ZWN0ZWQiKTsKICAgICAgICAgICAgICAgICAgICBhZHZ0LmludGVycnVwdCgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYWR2dC5zZXRSZWFkKHRydWUpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9