SyncBlock.java
资源名称:Source.rar [点击查看]
上传用户:songled
上传日期:2022-07-14
资源大小:94k
文件大小:1k
源码类别:
进程与线程
开发平台:
Java
- public class SyncBlock extends Object {
- private Object longLock;
- public SyncBlock() {
- longLock = new Object();
- }
- public void doStuff() {
- print("about to try to get exclusive access " +
- "to longLock");
- synchronized ( longLock ) {
- print("got exclusive access to longLock");
- try { Thread.sleep(10000); }
- catch ( InterruptedException x ) { }
- print("about to relinquish exclusive access to " +
- "longLock");
- }
- }
- private static void print(String msg) {
- String name = Thread.currentThread().getName();
- System.err.println(name + ": " + msg);
- }
- private static Thread launch(
- final SyncBlock sb,
- String name
- ) {
- Runnable r = new Runnable() {
- public void run() {
- print("in run()");
- sb.doStuff();
- }
- };
- Thread t = new Thread(r, name);
- t.start();
- return t;
- }
- public static void main(String[] args) {
- try {
- SyncBlock sb = new SyncBlock();
- Thread t1 = launch(sb, "T1");
- Thread.sleep(500);
- Thread t2 = launch(sb, "T2");
- Thread t3 = launch(sb, "T3");
- Thread.sleep(1000);
- print("about to interrupt T2");
- t2.interrupt();
- print("just interrupted T2");
- } catch ( InterruptedException x ) {
- x.printStackTrace();
- }
- }
- }