notifyAll()_notify for

notifyAll()_notify for下面这段代码suclassCalculaterextendsThread{ publicinttotal=1; publicvoidrun(){ System.out.println(“Calculatorrun”); synchronized(this){ for(inti=1;i<10;i++){ total*=i; }

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

下面这段代码说明了, notifyAll将所有等待在Calculater对象cal的对象锁上的所有线程从阻塞状态变为可运行状态, 但是他们要获得cal对象锁才能继续执行, 随意他们会按随机顺序一个一个的执行完剩下的代码。

class Calculater extends Thread{
	public int total = 1;
	public void run(){
		System.out.println("Calculator run");
		synchronized(this){
			for(int i=1; i<10; i++){
				total *= i;
			}
			notifyAll();
		}
	}
}

public class NotifyAllTest extends Thread{
	public Calculater cal;
	public NotifyAllTest(Calculater cal){
		this.cal = cal;
	}
	public void run(){
		System.out.println(this.currentThread()+" runing ");
		synchronized(this.cal){
			try {
				this.cal.wait();
				System.out.println(this.currentThread() + "wake up");
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			System.out.println(this.currentThread()+" : total = "+this.cal.total);
			try {
				Thread.sleep(1000);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
	public static void main(String [] args) throws InterruptedException{
		Calculater cal = new Calculater();
		new NotifyAllTest(cal).start();
		new NotifyAllTest(cal).start();
		new NotifyAllTest(cal).start();
		new NotifyAllTest(cal).start();
		new NotifyAllTest(cal).start();
		Thread.sleep(1000);
		cal.start();
	}

}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/197761.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • navicat 中文注册码「建议收藏」

    navicat 中文注册码「建议收藏」中文版Navicatmysql9.x下载地址:http://download2.navicat.com/download/navicat091_mysql_cs.exe下载地址:http://download2.navicat.com/download/navicat091_mysql_cs.tar.gz注册码:NAVL-KSG4-K8D8-8TV6中文版Navicatm…

    2022年10月13日
    3
  • html中table居中和表格内容居中的问题

    html中table居中和表格内容居中的问题关于表格中的内容::在表格td中,有两个属性控制居中显示align——表示左右居中——left,center,rightvalign——控制上下居中——left,center,right这两个属性综合使用,就可以让单元格的内容上下左右都居中显示。但是有的时候吧,会失效,那么在td中设置text-align为center也可。td{…

    2022年9月19日
    2
  • python dataframe fillna_python缺失值处理 fillna

    python dataframe fillna_python缺失值处理 fillna约定:importpandasaspdimportnumpyasnpfromnumpyimportnanasNaN填充缺失数据fillna()是最主要的处理方式了。df1=pd.DataFrame([[1,2,3],[NaN,NaN,2],[NaN,NaN,NaN],[8,8,NaN]])df1代码结果:01201.02.03.01NaNNaN2.02NaNNaNNaN38….

    2022年8月12日
    6
  • YUV和RGB的相互转换实验

    YUV和RGB的相互转换实验1、彩色空间转换基本原理1)彩色空间转换公式:为了实现格式转换,我们首先要明确待转换格式和目标格式的特点和相互转换关系,这是编程实现转换的核心。对于RGB转YUV的过程,我们要首先拿到RGB文件的数据,再通过上图的YUV计算公式对其做运算,得到YUV数据,从而实现转换。而对于YUV转RGB则要首先获得YUV数据,用第二组RGB公式计算得到RGB数据。在本实验中,转换公式如下。…

    2022年7月16日
    13
  • 3dreshaper_3d曲面屏幕是什么意思

    3dreshaper_3d曲面屏幕是什么意思效果图源代码varimg=newImage();varcanvas=document.createElement(‘canvas’);varctx=canvas.getContext(‘2d’);img.onload=function(){varwidth=canvas.width=img.width;varheight=…

    2022年10月15日
    2
  • dirsearch安装和使用[通俗易懂]

    dirsearch安装和使用[通俗易懂]目录dirsearch介绍下载及安装如何使用简单用法递归扫描线程前缀/后缀黑名单筛选器原始请求Wordlist格式排除扩展扫描子目录代理报告其他命令小贴士选项选项强制性字典设置一般设置请求设置连接设置配置dirsearch介绍dirsearch是一个基于python3的命令行工具,常用于暴力扫描页面结构,包括网页中的目录和文件。相比其他扫描工具disearch的特点是:支持HTTP……

    2022年10月6日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号