package web;
/**
* synchronized锁住了整个静态类
* @author zengst
*
*/
class aaa2{
private static int a=2;
//定义了私有构造函数,外部无法通过该构造函数构造实例,除非重载
private aaa2(){}
public static void getInstance(){
if(a > 0){
System.out.println(Thread.currentThread().getName()+"getInstance");
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized(aaa2.class){
System.out.println(Thread.currentThread().getName());
System.out.println(a);
a--;
System.out.println(a);
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName());
}
}
}
}
public class StaticSharedTest {
public static void main(String args[]){
zengst2 z = new zengst2();
Thread t1 = new Thread(z);
Thread t2 = new Thread(z);
Thread t3 = new Thread(z);
t1.start();
t2.start();
t3.start();
}
}
class zengst2 implements Runnable{
public void run() {
aaa2.getInstance();
}
}
运行结果:
Thread-0getInstance
Thread-1getInstance
Thread-2getInstance
Thread-0
2
1
Thread-0
Thread-2
1
0
Thread-2
Thread-1
0
-1
Thread-1
相关推荐
### CVS使用注意事项详解 #### 一、概述 CVS(Concurrent Versions System)是一种源代码版本控制系统,主要用于软件开发过程中的版本控制管理。CVS能够有效地管理多个开发者的协同工作,确保代码的一致性和完整性...
本文将围绕“hibernate 事务管理注意事项”这一主题展开讨论,通过对给定文件中的标题、描述、标签以及部分内容的分析,深入探讨在实际应用中需要注意的关键点。 #### 一、AH业务逻辑实现模式 1. **如果未使用事务...
6. **注意事项** - 合理使用`synchronized`,过多的同步可能导致性能下降。 - 避免死锁:当两个或更多线程互相等待对方释放资源时,会导致所有线程都无法继续执行。 - 考虑使用高级并发工具,如`ReentrantLock`、...
以下是对C# WebBrowser操作与注意事项的详细说明: 1. **初始化WebBrowser控件** - 在`public partial class Form1 : Form`之上添加 `[PermissionSet]` 和 `[ComVisibleAttribute]` 特性,这是为了确保控件可以在...
6. **注意事项** - 为了防止资源泄露,确保在不再需要同步时正确地销毁互斥量。 - 避免死锁:合理安排线程的执行顺序和同步资源的获取,确保不会出现互相等待的情况。 - 尽可能减少同步区域,以降低性能开销。 ...
synchronized 的使用注意事项 1. synchronized 方法可能会对系统性能产生影响, nên尽量避免无谓的同步掌握。 2. 使用 synchronized 关键字时,需要明确对象的锁是谁的。 3. synchronized 块可以作为一种解决方法...
《Discuz与ThinkPHP同步登录实现详解》 在互联网应用开发中,用户登录系统的...通过以上步骤和注意事项,开发者可以有效地实现在 ThinkPHP 应用中与 Discuz 论坛的同步登录功能,提高用户体验,同时简化管理复杂度。
此外,压缩包中的"www.pudn.com.txt"文件可能是项目相关的文档或说明,包含了更多关于CTcpSocket类的具体用法、示例代码或者注意事项,建议参考阅读以获取更详细的信息。 总结来说,CTcpSocket类是Windows环境下...
"JAVA面试体系一条龙(含笔试与各种注意事项与标准模板)"这个资源显然旨在帮助求职者全面准备Java面试,涵盖笔试环节以及面试的各种策略和技巧。 一、Java基础知识 在Java面试中,基础扎实是必不可少的。这包括但...
注意事项与最佳实践 - 避免长时间的同步操作:Synchronize会阻塞工作线程,如果同步操作耗时过长,可能会导致应用响应迟钝。对于复杂的操作,可以考虑使用其他同步机制,如TThread.Queue或TTask.Run。 - 尽量减少...
本篇文章将深入探讨Hibernate中的第二级缓存,并以JBoss Caching为例,讲解配置和使用过程中的注意事项。 一、Hibernate第二级缓存概念 第二级缓存是SessionFactory级别的共享缓存,它存储了多个Session之间的持久...
6. **使用注意事项** - 为了防止死锁,务必确保在完成操作后释放Mutex。如果线程在持有Mutex时崩溃,Mutex将不会被释放,其他线程可能会永久等待。 - Mutex的使用应尽可能地限制在最短的时间内,以减少阻塞其他...
除了上述两点,使用Django的ManyToManyField时还需要注意以下事项: - 要确保ManyToManyField指定的关联模型是有效的,不能将ManyToManyField直接指向一个尚未定义或不存在的模型。 - 如果关联的是同一个应用下的...
以下是一些关键步骤和注意事项: 1. 引用PortableDeviceApiLib和相关DLL:首先,你需要在项目中添加对PortableDeviceApiLib.dll和WpdPack.dll的引用。确保在引用属性中,"Embed Interop Types"选项设置为False,...
本篇文章将深入探讨这些注意事项,旨在帮助开发者更好地理解和使用自定义键来操作`NSDictionary`。 首先,`NSDictionary`要求键必须是不可变的,并且遵循`NSCopying`协议。这是因为`NSDictionary`会复制键以便内部...
本文将详细介绍如何在Spring Boot中创建线程池并配置`@Async`,以及需要注意的一些事项。 首先,我们需要在Spring Boot的主程序类上添加`@EnableAsync`注解,以启用异步方法的支持。例如: ```java import org....
- **2.1.2 注意事项** - 如果PowerDesigner中的模型被修改了,但没有同步到Eclipse项目中,那么Eclipse中的Java文件可能不会反映出这些更改。 **2.2 Eclipse同步至PowerDesigner** - **2.2.0 范围** - 当我们...
5. **注意事项** - 临界区对象不能跨进程共享,这意味着它只能用于同一进程内的线程同步。 - 确保每个线程在完成对临界区的操作后都正确离开,否则可能导致死锁。 - 避免长时间持有临界区,以免阻塞其他线程过久...
在Spring Boot中,多线程开发是提升应用性能和并发能力的重要手段。Spring Boot通过`TaskExecutor`接口提供了一种方便的方式来实现多线程和...理解并遵循这些注意事项将有助于构建健壮、高效的多线程Spring Boot应用。