测试代码如下:
package com.chapter03;class Service02 {public void testMethod(Object lock) {try {synchronized (lock) {System.out.println("begin wait");lock.wait();System.out.println("end wait");}} catch (InterruptedException e) {e.printStackTrace();}}}class ThreadA extends Thread {private Object lock;public ThreadA(Object lock) {this.lock = lock;}@Overridepublic void run() {Service02 service02 = new Service02();stMethod(lock);}
}class ThreadB extends Thread {private Object lock;public ThreadB(Object lock) {this.lock = lock;}@Overridepublic void run() {Service02 service02 = new Service02();stMethod(lock);}
}public class StudyThreads02释放锁与不释放锁 {public static void main(String[] args) {Object lock = new Object();ThreadA threadA = new ThreadA(lock);ThreadB threadB = new ThreadB(lock);threadA.start();threadB.start();}
}
执行结果: 执行到wait之后 锁被释放,线程B拿到锁开始执行直到wait 继续等待。
本文发布于:2024-02-04 23:35:30,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170718936760778.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |