调用线程
public class UserThread extends Thread {
private final Gate gate;
private final String myname;
private final String myaddress;
public UserThread(Gate gate, String myname, String myaddress) {
this.gate = gate;
this.myname = myname;
this.myaddress = myaddress;
}
public void run() {
System.out.println(myname + " BEGIN");
while (true) {
gate.pass(myname, myaddress);
}
}
}
同时只允许一个对象访问锁块.(类似于synchronized 标示的块)
这样做的主要原因是因为保护类变量不同时被多个线程修改
方法内部的变量不会在多线程同时修改.
任务
public class Gate {
private int counter = 0;
private String name = "Nobody";
private String address = "Nowhere";
//jdk1.5新特性 效率高于synchronized
private Lock passLock = new ReentrantLock();
private Lock toStringLock = new ReentrantLock();
public void pass(String name, String address) {
//使用锁机制
passLock.lock();
try {
this.counter++;
this.name = name;
this.address = address;
check();
} finally {
//解锁
passLock.unlock();
}
}
public String toString() {
toStringLock.lock();
try {
return "No." + counter + ": " + name + ", " + address;
} finally {
toStringLock.unlock();
}
}
private void check() {
if (name.charAt(0) != address.charAt(0)) {
System.out.println("***** BROKEN ***** " + toString());
}
}
}
主程序
public class Main {
public static void main(String[] args) {
System.out.println("Testing Gate, hit CTRL+C to exit.");
Gate gate = new Gate();
new UserThread(gate, "Alice", "Alaska").start();
new UserThread(gate, "Bobby", "Brazil").start();
new UserThread(gate, "Chris", "Canada").start();
}
}
分享到:
- 2009-07-08 09:58
- 浏览 1105
- 评论(2)
- 论坛回复 / 浏览 (2 / 2126)
- 查看更多
相关推荐
标题中的“多线程精品资源--Chrome multi-threaded download manager extension”揭示了这是一个关于Chrome浏览器的多线程下载管理器扩展程序的资源集合。多线程下载管理器是一种能够利用多个连接同时下载文件的工具...
第1章 Single Threaded Execution——能通过这座桥的,只有一个人 第2章 Immutable——想破坏它也没办法 第3章 Guarded Suspension——要等到我准备好喔 第4章 Balking——不需要的话,就算了吧 第5章 Producer-...
ActiveTcl8.6.4.1.299124-win32-ix86-threaded.exe
ActiveTcl8.4.11.2.201775-win32-ix86-threaded.exe 包含了很多库,另外是支持win32,32bit的老版本
ActiveTcl8.4.16.0.282109-win32-ix86-threaded
标题"ActiveTcl8.6.3.1.298624-win32-ix86-threaded"表明这是一个针对Windows 32位Intel x86架构的ActiveTcl版本,版本号为8.6.3.1,构建号为298624,且支持多线程。这意味着它可以充分利用多核处理器的性能,提高...
标题 "rknn-multi-threaded-nosigmoid.zip" 暗示了这个压缩包可能包含一个或多个关于RKNN(RISC-V Neural Network Kernel)的多线程实现,并且在模型中省略了Sigmoid激活函数。RKNN是针对RISC-V架构优化的神经网络...
标题中的"ActiveTcl8.4.19.4.292682-win32-ix86-threaded.exe_2"指的是一个特定版本的ActiveTcl软件的安装程序,适用于Windows 32位操作系统,且是线程安全(threaded)的。ActiveTcl是由Tcl/Tk开发公司ActiveState...
这个版本是8.4.19,包含了线程支持,这意味着它可以在多线程环境中运行,提高性能和并发性。 在描述中提到的“在编译postgresql时,需要下载很多依赖库”,指的是PostgreSQL,一个开源的对象关系型数据库管理系统。...
目录: 漫谈UML Introduction 1 Java语言的线程 Introduction 2 多线程...总结 多线程程序设计的模式语言 附录A 练习问题的解答 附录B Java的内存模型 附录C Java线程的优先级 附录D 线程相关的主要API 附录E 参考文献
"linux-ix86-threaded"部分表明该版本是为32位Linux系统设计的,并且支持多线程。这意味着可以在单个进程中同时执行多个Tcl脚本,提高程序的并发性和效率。这对于处理大量并发请求或执行并行计算的任务特别有用。 ...
3. **线程支持**:版本8.6.4.1.299124-win32-ix86-threaded中的“threaded”标识意味着它支持多线程,可以利用多核处理器进行并行计算。 4. **预编译二进制**:ActiveTcl提供预编译的二进制包,用户可以直接下载...
tcl/tk active 环境 8.6.2.0
这个压缩包是线程安全的,意味着它支持多线程编程,这对于在多核处理器上运行的系统来说尤其重要。TCL是一种动态编程语言,常用于脚本编写、自动化任务、GUI开发以及测试套件等。 描述中提到,这个包可能是为在ARM...
同时,"threaded"标识表明该版本支持多线程编程,这意味着开发者可以在同一程序中利用多个处理器核心,提高程序的执行效率。 在Windows环境中,ActiveTcl的安装文件ActiveTcl8.5.17.0.298612-win32-ix86-threaded....
BS EN 1254-4-2021 Threaded fittings.pdf
下载后放在之前的两个文件...@type *.001 > ActiveTcl8.5.9.1.294121-win32-ix86-threaded.exe @type *.002 >> ActiveTcl8.5.9.1.294121-win32-ix86-threaded.exe echo 完成合并,按任意键退出... pause > NUL @echo on
"get-system-time-in-Multi-threaded.rar_In Time"这个资源可能包含了一个简单的多线程应用,用于每秒获取系统时间。下面将详细讨论在多线程环境下获取系统时间的关键知识点。 1. **线程基础**: - **线程**是操作...