Skip to content

Instantly share code, notes, and snippets.

@sang4lv
Created March 7, 2017 07:27
Show Gist options
  • Save sang4lv/0f4aef94c9650d5004d69ed9aa6e206a to your computer and use it in GitHub Desktop.
Save sang4lv/0f4aef94c9650d5004d69ed9aa6e206a to your computer and use it in GitHub Desktop.
class Callme {
void call(String message) {
try {
Thread.sleep(1000);
} catch(InterruptedException e) {
System.out.println("Interrupted. Message is " + message);
}
System.out.print("[" + message);
System.out.println("]");
}
}
class Caller implements Runnable {
Thread t;
private String message;
private Callme target;
Caller(Callme target, String message) {
this.target = target;
this.message = message;
t = new Thread(this);
t.start();
}
Caller(Callme target, String message, int priority) {
this.target = target;
this.message = message;
t = new Thread(this);
t.setPriority(priority);
System.out.println(t.getPriority());
t.start();
}
public void run() {
target.call(message);
}
}
class Sync {
public static void main(String args[]) {
Callme target = new Callme();
Caller ob1 = new Caller(target, "Hello", 1);
Caller ob2 = new Caller(target, "Synchronized", 2);
Caller ob3 = new Caller(target, "World", 3);
try {
ob1.t.join();
ob2.t.join();
ob3.t.join();
} catch(InterruptedException e) {
System.out.println("Interrupted");
}
}
}
// 输出:
// localhost:java angelawang$ java Sync
// 1
// 2
// 3
// [World[Synchronized]
// [Hello]
// ]
// localhost:java angelawang$ java Sync
// 1
// 2
// 3
// [Hello[World]
// [Synchronized]
// ]
// localhost:java angelawang$ java Sync
// 1
// 2
// 3
// [Synchronized[World]
// [Hello]
// ]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment