并发编程处理实战篇5:线程操作wait和notify

news/2024/5/17 16:53:13 标签: wait和notify, JVM, synchronized, wait, notify

线程进入运行状态之后,可以根据条件触发转为“等待阻塞”:

运行的线程执行wait()方法,该线程会释放占用的所有资源,JVM会把该线程放入“等待池”中。进入这个状态后,是不能自动唤醒的,必须依靠其他线程调用notify()或notifyAll()方法才能被唤醒,

 

如下代码:

1、定义两个测试线程类

public class WaitTest1 extends Thread {
	private Object look;
 
	public WaitTest1(Object look) {
		this.look = look;
	}
 
	@Override
	public void run() {
		try {
			synchronized (look) {
				System.out.println("wait start...");
				look.wait();
				System.out.println("wait end...");
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}
 
public class WaitTest2 extends Thread {
 
	private Object look;
 
	public WaitTest2(Object look) {
		this.look = look;
	}
 
	@Override
	public void run() {
		try {
			synchronized (look) {
				System.out.println("notify start...");
				look.notify();
				System.out.println("notify end...");
			}
		} catch (Exception e) {
			

http://www.niftyadmin.cn/n/1554993.html

相关文章

css改变伪元素color_【CSS】角标(伪元素)

微信订阅号:Rabbit_svip利用伪元素( ::before 和 ::after )制作,这样可以不影响主元素,也不用依赖其他html元素。利用border的特性制作角标。border属性还有很多玩法:本节效果微信订阅号:Rabbit_svip.corner {position…

c++ string分割字符串split_【Java学习笔记】(二)字符串(多图)

正文之前字符串(String),是由零个或多个字符组成的有限序列。一般记为 s a1a2...an(0 ≤ n ≤ ∞)它是编程语言中表示文本的数据类型本文将会介绍:Java字符串基本概念字符串基本操作 正文Java字符串基本概…

并发编程处理实战篇6:多线程交替执行

场景: 由于业务需要多线程并发操作,并且多线程之间是有一定的依赖关系,比如A线程存储数据,B线程则解析数据,即B线程是需要在A 线程执行完之后才开始执行,同样A线程存储数据的也需要B线程对数据解析完成后才开始存储新的数据,因此A与B两个线程就形成了交替实现,当然具体…

卸载cuda_NVIDIA宣布CUDA支持Arm,用于构建百万兆级AI超级计算机

6月17日消息,NVIDIA周一宣布支持Arm CPU,为高性能计算行业开辟了一条全新途径,以构建具有极高能效水平的百万兆级AI超级计算机。NVIDIA将于年底前向Arm生态系统提供全堆栈的AI和HPC软件,该堆栈为600多个HPC应用程序和所有AI框架提…

javaweb课堂练习继承与重写怎么做_Java继承

Java不像C,Python那样支持多继承,Java只支持单继承,但是可以多实现。先看变量在继承当中的情况如果要查看父类的num怎么办呢? 用 super。this代表的是本类对象的引用,super代表的是父类对象的引用。子类访问本类中的成…

并发编程处理实战篇7:java线程停止interrupt

说明: 线程在运行过程中可能需要根据条件判断进行停止,从api上开是可以使用stop方法强制终止线程,但是官方不推荐这个方法,这个是作废过期的方法,因为如果强制让线程停止则有可能使一些清理性的工作得不到完成,同时对锁定的对象进行了“解锁”,有可能导致数据得不到同步…

11纯代码 oc xcode_Xcode11 创建了一个oc项目,加载提示框位置(0,0) 大哥们怎么解决...

Xcode 版本更新新增了SceneDelegate,SVProgressHUD的作者在设置HUDView的中心位置时使用的是UIApplication.sharedApplication.delegate.window.bounds 获取的,而版本更新之后获取不到正确的rect,因此把这部分代码进行调整。(鄙人测试没问题)…

java quartz mybatisplus_JNPF快速开发平台-简单快速高效开发java项目

JNPF快速开发平台JNPF快速开发平台采用前后端分离技术、采用B/S架构开发,形成一站式开发多端(APPPC)使用。使用JNPF开发平台可以简单、快速、高效的构建各种类型java项目。JAVA版介绍JNPF.java版采用前后端分离,可将代码直接导入i…