#创建三个线程交替循环打印“A”、“B”、“C”
package com.xwl;
/**
* 三个线程交替打印abc
* @author Administrator
*
*主要的思想就是,为了控制执行的顺序,必须要先持有prev锁,也就是前一个线程要释放自身对象锁,再去申请自身对象锁,
*两者兼备时打印字母,之后首先调用self.notifyAll()释放自身对象锁,唤醒下一个等待线程,再调用prev.wait()释放prev对象锁,终止当前线程,
*等待循环结束后再次被唤醒。程序运行的主要过程就是A线程最先运行,持有C,A对象锁,后释放A,C锁,唤醒B。线程B等待A锁,再申请B锁,后打印B,
再释放B,A锁,唤醒C,线程C等待B锁,再申请C锁,后打印C,再释放C,B锁,唤醒A……
/
public class ABC {
//静态 类
//线程 实现Runnable
static class ThreadPrinter implements Runnable{
private String name;//打印的内容
private Object prev;//上一个线程持有的锁
private Object self;//自己持有的锁
//构造方法
public ThreadPrinter(String name, Object prev, Object self) {
super();
this.name = name;
this.prev = prev;
this.self = self;
}
//任务
public void run() {
//首先获取上一个线程的锁
//然后再获取自己的锁
//持有两把锁才能打印AorBorC
//打印完了之后首先释放自己的所标记 self.notifyAll();
//然后释放上一个线程的所标记 prev.wait();
while (true) {//多线程并发,不能用if,必须用循环测试等
相关推荐
强化学习 之 Actor Critic
简介 Actor Critic是一种结合体算法: (1)Actor 的前生是 Policy Gradients,这能让它毫不费力地在连续动作中选取合适的动作,而 Q-learning 做这件事会瘫痪; (2)Critic 的前生是 Q-learning 或者其他的 以值为基础的学习法,能进行单步更新,而传统的 Policy Gradients 则是回合更新,这降低了学习效率。 算法思想 Actor...
GitHub 新手使用手册
理论说太多容易忘,来实践实践吧。
Google Earth Engine:计算逐年全球潜在蒸发量(PET)的 ERA 数据
通过获取温度、湿度和降水数据,并使用Penman-Monteith公式,我们可以得到每年的潜在蒸发量。在本文中,我们将使用Google Earth Engine平台和ERA(欧洲再分析气象数据集)数据来计算逐年全球的潜在蒸发量(PET)。接下来,我们需要对ERA数据进行预处理,以获取我们需要的潜在蒸发量数据。有了温度、湿度和降水数据,我们可以使用Penman-Monteith公式来计算每年的潜在蒸发量。最后,我们可以将计算得到的潜在蒸发量数据进行可视化,以便更好地理解全球的水汽蒸发情况。
华为OD机试2025C卷 - 精准核酸检测 (C++ & Python & JAVA & JS & GO)
华为OD机试2025C卷 精准核酸检测,提供Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解
PHP实现获取当地网络时间(附完整源码)
PHP实现获取当地网络时间(附完整源码)
基于Simulink的风电系统背靠背变流器解耦控制仿真
本文完成了基于 Simulink 的风电背靠背变流器解耦控制仿真,实现了:✅掌握 dq 解耦控制的数学本质✅构建 MSC + GSC 完整控制链✅验证其在动态、扰动下的卓越性能✅达成高解耦度、低 THD、稳母线三大目标。
NVIDIA Isaac GR00T N1 人形机器人强化学习入门教程(二)详细步骤
LeRobot 格式 1.1 加载数据集 要加载数据集,我们需要定义以下 3 项内容: 在数据中显示图像帧 我们还可以对 LeRobotSingleDataset 类中的数据进行一系列转换。下面展示了如何对数据进行转换。 现在看看应用转换后的数据有何不同。 例如,对状态和操作进行规范化和串联,对视频图像进行裁剪、调整大小和颜色抖动。 二、GR00T 推断 本教程介绍如何使用 GR00
使用cutoff包基于最小p值法方法计算最佳截断值(基于LIRI基因数据集) R语言
这个方法在生物学研究中具有重要的意义,能够帮助我们从大规模基因表达数据中准确地找到差异显著的基因。在上述代码中,calculate_p_values函数是一个自定义函数,用于计算差异表达基因的p值。在本文中,我们将介绍如何使用R语言的cutoff包来基于最小p值法方法计算最佳的截断值,以便筛选出差异显著的基因。通过以上步骤,我们成功地使用cutoff包基于最小p值法方法计算了最佳的截断值,并筛选出了差异显著的基因。最后,我们可以根据得到的最佳截断值将基因表达数据集进行筛选,提取出差异显著的基因。
复分析 阿尔福斯(Ahlfors) 第三版答案 英文
答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案
假人有限元模型
假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用
RU DOS版、EFI版32bit/64bit BIOS常用工具
DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。
NTscan扫描工具
ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。
810



被折叠的 条评论
为什么被折叠?



