Here's a simple program but reveal thread synchronization mechanism:
- only one thread can enter critical region at a fix time
- two thread enter critical region one by one, and loop
- the time won't affect thread synchronization
- two thread work together like pass ball
package com.demo.thread;
public class DemoThread {
public static void main(String[] args) {
Object obj = new Object();
Working worker1 = new Working("worker-1", obj, 2000);
Working worker2 = new Working("worker-2", obj, 20);
worker1.start();
worker2.start();
}
}
class Working extends Thread {
private String mName;
private Object mObj;
private long mTime;
public Working(String name, Object obj, long time) {
mName = name;
mObj = obj;
mTime = time;
}
public void run() {
while(true) {
try {
System.out.println(mName + " is waiting");
Thread.sleep(mTime);
System.out.println(mName + " is trying to enter critical region");
synchronized(mObj) {
System.out.println(mName + " has entered into critical region");
System.out.println(mName + " will notify other thread");
mObj.notify();
System.out.println(mName + " will hang");
mObj.wait();
System.out.println(mName + " will quit critical region");
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
the output will like:
worker-1 is waiting
worker-2 is waiting
worker-2 is trying to enter critical region
worker-2 has entered into critical region
worker-2 will notify other thread
worker-2 will hang
worker-1 is trying to enter critical region
worker-1 has entered into critical region
worker-1 will notify other thread
worker-1 will hang
worker-2 will quit critical region
worker-2 is waiting
worker-2 is trying to enter critical region
worker-2 has entered into critical region
worker-2 will notify other thread
worker-2 will hang
worker-1 will quit critical region
worker-1 is waiting
worker-1 is trying to enter critical region
worker-1 has entered into critical region
worker-1 will notify other thread
worker-1 will hang
worker-2 will quit critical region
worker-2 is waiting
worker-2 is trying to enter critical region
worker-2 has entered into critical region
worker-2 will notify other thread
worker-2 will hang
worker-1 will quit critical region
worker-1 is waiting
worker-1 is trying to enter critical region
worker-1 has entered into critical region
worker-1 will notify other thread
worker-1 will hang
worker-2 will quit critical region
worker-2 is waiting
worker-2 is trying to enter critical region
worker-2 has entered into critical region
worker-2 will notify other thread
worker-2 will hang
worker-1 will quit critical region
worker-1 is waiting
worker-1 is trying to enter critical region
worker-1 has entered into critical region
worker-1 will notify other thread
worker-1 will hang
worker-2 will quit critical region
worker-2 is waiting
worker-2 is trying to enter critical region
worker-2 has entered into critical region
worker-2 will notify other thread
worker-2 will hang
worker-1 will quit critical region
worker-1 is waiting
worker-1 is trying to enter critical region
worker-1 has entered into critical region
worker-1 will notify other thread
.....
分享到:
相关推荐
Lattice Diamond 3.12 Reveal User Guide Lattice Diamond 3.12 Reveal User Guide 是一款高级的 FPGA 片上调试工具,旨在帮助用户更方便地 debug 和优化 FPGA 设计。Reveal 软件提供了几个关键的可用性优势,包括...
reveal 13破解版 666 xcode界面调试工具 6666666666666666666666666666666666666
Reveal使用
A new release of Reveal (v20) is available to all users with a current license, and as a 14-day trial. This is a really small release that fixes a couple of issues that we shipped in Reveal 19. The ...
Reveal 14 破解工具,直接下载Reveal 14,然后打开Patcher,根据提示操作即可移除试用限制。仅限个人进行研究使用
Reveal 是一个界面调试工具。使用Reveal,我们可以在iOS开发时动态地查看和修改应用程序的界面。它类似Chrome的“审查元素”功能,我们不但可以在运行时看到iOS程序的界面层级关系,还可以实时地修改程序界面,不用...
Reveal 17 破解工具,请直接从官方网站下载Reveal 17,不要打开Reveal. 然后打开Patcher,根据提示把reveal拖动到Patcher窗口中,看到success字样即代表成功。仅限个人进行研究使用
《深入探索reveal 14(10107):逆向工程与UI调试利器》 reveal 14(10107)是一款强大的iOS应用程序界面(UI)调试工具,专为开发者和设计师设计,它能够帮助用户深入洞察应用程序的用户界面层次结构,实时查看并...
**标题:“reveal.js.zip”** **描述:“revealjs”** **标签:“revealjs”** **压缩包子文件的文件名称列表:reveal.js** **正文:** `reveal.js` 是一个开源的HTML演示框架,它允许用户创建交互式、响应式的...
"revealjs-demo"是一个基于Reveal.js框架的演示文稿示例项目,它通常用于创建交互式的、幻灯片式的演讲或教程。Reveal.js是一个开源的JavaScript库,由Hakim El Hattab开发,它允许开发者用HTML来创建具有动画过渡...
低版本的 Reveal-SDK,可以使用网上破解版的 Reveal 使用。 缺点:无法使用 Reveal-SDK 的新功能
**标题:“reveal.js-master下载”** **描述:“滚屏式脚本编写 html JavaScript”** **标签:“reveal.js”** 本文将深入探讨`reveal.js`框架,它是一款基于HTML和JavaScript的开源幻灯片制作工具,允许用户...
Reveal163 破解版
Reveal for mac是Mac os平台上的一款开发者调试IOS应用的Mac开发软件,reveal Mac版它能够在运行时调试和修改iOS应用程序。Reveal能连接到应用程序,并允许开发者编辑各种用户界面参数,这反过来会立即反应在程序的...
Reveal是一款强大的第三方iOS UI界面调试工具,它为开发者提供了直观且高效的界面检查和调试能力。本文将详细介绍Reveal的功能、使用方法以及如何通过其免费版来提升开发效率。 首先,Reveal的突出特点在于它的实时...
在Android开发中,Reveal Effect是一种非常吸引人的动画效果,特别是在Android 5.0(Lollipop)及更高版本中引入。这种效果通常用于界面切换、按钮点击或视图显示等场景,带给用户更加生动和有趣的交互体验。...
Reveal是一款UI调试神器,对iOS开发非常有帮助。废话不多说,这里直接介绍工具的使用以及破解工具下载。另外,本文只适用于调试模拟器,因为调试真机时,需要越狱,这里不做研究。写这片文章之前用的Reveal版本是...
Reveal17 破解补丁
Reveal 1.5.1 破解图文教程
Reveal17破解版及使用 1.解压文件 2.打开Reveal 3.打开PYGPatcher.app 4.到官网获取一个使用账号 5.把Reveal拖到PYGPatcher成功破解