notify() notifyAll() 区别

article/2025/11/6 1:24:09

notify

  • 参考:https://blog.csdn.net/weixin_44121696/article/details/109306019

public class ObjectTest {public static void main(String[] args) {Object objectLock = new Object();new Thread(() -> {synchronized (objectLock) {System.out.println(Thread.currentThread().getName() + "--- hello t1");try {objectLock.wait();} catch (InterruptedException e) {e.printStackTrace();}System.out.println(Thread.currentThread().getName() + "--- t1 被唤醒");}}, "t1").start();new Thread(() -> {synchronized (objectLock) {System.out.println(Thread.currentThread().getName() + "--- hello t2");try {objectLock.wait();} catch (InterruptedException e) {e.printStackTrace();}System.out.println(Thread.currentThread().getName() + "--- t2 被唤醒");}}, "t2").start();new Thread(() -> {synchronized (objectLock) {System.out.println(Thread.currentThread().getName() + "--- hello t3");try {objectLock.wait();} catch (InterruptedException e) {e.printStackTrace();}System.out.println(Thread.currentThread().getName() + "---  t3 被唤醒");}}, "t3").start();new Thread(() -> {synchronized (objectLock) {System.out.println(Thread.currentThread().getName() + "--- hello t4");try {objectLock.wait();} catch (InterruptedException e) {e.printStackTrace();}System.out.println(Thread.currentThread().getName() + "--- t4 被唤醒");}}, "t4").start();new Thread(() -> {synchronized (objectLock) {objectLock.notify();System.out.println(Thread.currentThread().getName() + "--- 唤醒别人");}}, "t5").start();}
}

在这里插入图片描述

notifyAll()


public class ObjectTest {public static void main(String[] args) {Object objectLock = new Object();new Thread(() -> {synchronized (objectLock) {System.out.println(Thread.currentThread().getName() + "--- hello t1");try {objectLock.wait();} catch (InterruptedException e) {e.printStackTrace();}System.out.println(Thread.currentThread().getName() + "--- t1 被唤醒");}}, "t1").start();new Thread(() -> {synchronized (objectLock) {System.out.println(Thread.currentThread().getName() + "--- hello t2");try {objectLock.wait();} catch (InterruptedException e) {e.printStackTrace();}System.out.println(Thread.currentThread().getName() + "--- t2 被唤醒");}}, "t2").start();new Thread(() -> {synchronized (objectLock) {System.out.println(Thread.currentThread().getName() + "--- hello t3");try {objectLock.wait();} catch (InterruptedException e) {e.printStackTrace();}System.out.println(Thread.currentThread().getName() + "---  t3 被唤醒");}}, "t3").start();new Thread(() -> {synchronized (objectLock) {System.out.println(Thread.currentThread().getName() + "--- hello t4");try {objectLock.wait();} catch (InterruptedException e) {e.printStackTrace();}System.out.println(Thread.currentThread().getName() + "--- t4 被唤醒");}}, "t4").start();new Thread(() -> {synchronized (objectLock) {objectLock.notifyAll();System.out.println(Thread.currentThread().getName() + "--- 唤醒别人");}}, "t5").start();}
}

在这里插入图片描述


http://chatgpt.dhexx.cn/article/xE7x4g77.shtml

相关文章

NotifyIcon的属性、事件、方法

参考文章: NotifyIcon控件的使用. 属性 属性名操作博主翻译ContextMenuStrip可绑定ContextMenuStrip控件当用户右击该图标,显示的快捷菜单Icon必须选择一个ico格式的图片,否则右下角任务栏不会出现对象的可见性级别。所有属性都适用 事件 1.鼠标双击…

notify和notifyAll

notify: notify只会唤醒众多等待线程中的其中一个线程 用包子铺案例来演示一下 package com.thread;/*** author 邓亚非*/ public class TestNotify {private static Object objectnew Object();public static void main(String[] args) {// 顾客1线程new Thread(new …

notify和notifyall的区别

文章目录 场景分析例子经典java线程状态流转图 场景 调用wait的线程的唤醒,一般通过notify和notifyAll,但是两者之间有什么区别呢? 分析 线程调用synchronized方法或者synchronized代码块需要获取对象锁,如果没有获取则进入锁池线程调用wa…

Winform从入门到精通(14)——NotifyIcon(史上最全)

文章目录 前言:一、属性1、BalloonTipIcon1.1 ToolTipIcon.Error1.2 ToolTipIcon.Info1.3 ToolTipIcon.Warning1.4 ToolTipIcon.None2、BalloonTipText3、BalloonTipTitle4、Icon4.1 界面设置icon属性4.2 代码设置Icon属性5、Tag6、Text7、Visible

WPF利用NotifyIcon创建任务栏图标(菜鸟教程)

学习目标: 记录从WPF应用创建开始,一步步到任务栏图标创建的全过程。 流程: 1、环境:Win10 VS2017 打开VS2017,选择文件 -> 新建 -> 项目 -> Visual C# -> Windows桌面 ->WPF应用 -> 更改项目名为…

Notify

1 有什么用 作用 : 解耦,异步,并行 举个栗子 假设我们有这么一个应用场景,为了完成一个用户注册淘宝的操作,可能需要将用户信息写入到用户库中,然后通知给红包中心给用户发新手红包,然后还需…

NotifyICon使用

2010-04-11 15:47 by Ju2ender, 1438 visits, 网摘, 收藏, 编辑 最常见使用NotifyIcon的程序就是QQ了,当初我很好奇这通知区域的小企鹅是如何随着QQ的运行放上去的,这的确是个有趣的技巧。 要是用到自己的程序上的确显得很专业!我们来为自己的…

notifyIcon 用法

BalloonTipIcon —— 气泡提示的类型,有None(无)、Info(蓝色感叹号)、Warnning(黄色感叹号)、Error(小红叉) BalloonTipText —— 气泡提示的内容,如上图的N…

C#如何使用NotifyIcon实现任务栏托盘菜单及气泡提示

以软件【银行业会计人员技能训练系统】为例,如何使用NotifyIcon实现任务栏托盘菜单及气泡提示? 实现系统托盘方法如下: 1、向窗体中添加NotifyIcon控件和ContextMenuStrip控件; 2、为ContextMenuStrip控件添加子项; 3…

C#——NotifyICON的使用

1、作用(给程序增加下方提示图标) 2、实现方式 1)添加NotifyIcon控件,属性中Visible设为true 2)选择要显示的图标(icon格式),此时已经可以显示小图标,但右击不会显示小菜单栏. 3、添加ContextMenuStrip控…

【学习笔记】C# 动态系统托盘图标的实现 - NotifyIcon控件

操作步骤: 1、创建一个C# Windows窗体应用项目,命名为“IconTwinkle”: 2、双击解决方案中的“Resources.resx”,点击“添加资源”,选择图标并导入: 3、可见选定的图标已导入项目中: 4、双击右…

Android开发之PreferenceActivity和PreferenceFragment

在PreferenceActivity中,给我们提供了四个选项集成控件:ListPreference,EditTextPreference,CheckBoxPreference和RingtonePreference。 注意: 通过PreferenceActivity生成的XML文件,命名方式是定死了的&…

设置PreferenceFragment主题

整个项目主题颜色暗色,在使用PreferenceFragmentCompat文字也是黑色的导致看不清楚,采取更改PreferenceFragmentCompat主题实现,效果如下: 查看PreferenceFragmentCompat源码看到onCreate开始设置Theme,先获取preferen…

PreferenceFragment和PreferenceActivity

提要:PreferenceFragment展示中设置的值可以通过PreferenceManager.getDefaultSharedPreferences(context).来实现 【正文】 一、PreferenceFragment的引入: PreferenceActivity是一个非常有用的基类,当我们开发Android项目时避免不了选项设置…

彻底变换PreferenceFragment样式和全局设置字体样式的解决方案

一、PreferenceFragment样式修改 新样式 直接上图,原样式为白色样式,即为PreferenceFragment的默认样式: ① 白底黑字;② SwitchPreference开关默认为蓝色; ③ ListPreference列表默认为白色,选中状…

Android之PreferenceFragment详解

【正文】 一、PreferenceFragment的引入: PreferenceActivity是一个非常有用的基类,当我们开发Android项目时避免不了选项设置,这些设置习惯用Preference来保存。Android专门为这种Activity提供了便捷的基类PreferenceActivity。如果继承自Pr…

PreferenceActivity和PreferenceFragment实现设置界面

在进行Android开发的过程中,有时需要实现一个设置界面,就像下面的系统的显示设置。这样的界面自己实现起来略显繁琐,好在Android中已经实现了这样的设置界面,那就是PreferenceActivity。并且PreferenceActivity还有一个莫大的好处…

PreferenceFragment设置界面的编写

效果图&#xff1a; 布局文件&#xff1a; <PreferenceScreenxmlns:android"http://schemas.android.com/apk/res/android"xmlns:app"http://schemas.android.com/apk/res-auto"><PreferenceCategoryandroid:title"string/basic_setting…

Android PreferenceFragment

PreferenceFragment用来显示首选项的设置&#xff0c;效果图如下&#xff1a; 主布局文件&#xff1a; <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:tools"http://schemas.android.com/tools"android:layout_widt…

PreferenceFragment使用

PreferenceFragment 在Android3.0之前&#xff0c;设置界面使用PreferenceActivity&#xff0c;在Android3.0之后&#xff0c;官方推荐使用PreferenceFragment&#xff0c;对应于碎片化技术。 使用 新建Fragment 新建GeneralPreferenceFragment 继承PreferenceFragment&…