`
jsczxy2
  • 浏览: 1269780 次
  • 性别: Icon_minigender_1
  • 来自: 常州
文章分类
社区版块
存档分类
最新评论

多线程并发调用多个同一个实例多个带锁的方法,导致死锁~

    博客分类:
  • java
阅读更多

由于很多时候没有注意到,导致一个service的实现里面的2个方法都加了同一个锁,导致当一个方法繁忙的时候另一个锁的方法死锁,执行不了~~

解决方法,最好就是把执行次数多的方法另外加锁,不要和其他带锁的方法用同一个锁即可:

byte[] lock01 = new byte[0];

	public Result synResultByCache(String fid) {
		synchronized(lock01){
			Result result = null;
			if(objectCache.getObjectCache(DFSFile_List_Key+fid)==null){
				result = synResultById(fid);
				if(result!=null)
				objectCache.putObjectInCache(DFSFile_List_Key+fid, result);
			}else{
				result = (Result)objectCache.getObjectCache(DFSFile_List_Key+fid);
			}
			return result;
		}
	}
 
分享到:
评论

相关推荐

    java 多线程并发实例

    本文将基于"java 多线程并发实例"这个主题,深入探讨Java中的多线程并发概念及其应用。 首先,我们要了解Java中的线程。线程是程序执行的基本单元,每个线程都有自己的程序计数器、虚拟机栈、本地方法栈,而共享堆...

    WEBAPI多线程并发测试工具

    在API测试中,多线程并发测试意味着模拟多个用户或系统同时调用API,以测试其在并发访问时的行为。这有助于检测并发控制机制(如锁、信号量)是否有效,以及服务器如何处理高并发负载。 **文件名称列表解析** 由于...

    多线程并发技术

    其中,死锁是多线程编程中最为棘手的问题之一,指的是两个或多个线程互相等待对方释放锁,从而导致整个程序无法继续执行。通常,死锁的预防和避免需要开发者在设计阶段就考虑进去。 在实践中,比如在"实战Java高...

    C#多线程开发之并发编程经典实例.zip

    在C#编程中,多线程是一个至关重要的概念,尤其对于开发高性能、高并发的应用程序而言。本资源“C#多线程开发之并发编程经典实例”提供了丰富的实例,旨在帮助C#开发者深入理解并掌握多线程技术。以下是关于C#多线程...

    多线程并发处理数据的问题

    1. 继承Thread类:创建一个新的类,继承自Thread类,重写run()方法,然后创建该类的实例并调用start()方法启动线程。 2. 实现Runnable接口:创建一个新的类,实现Runnable接口,实现run()方法,然后将该类的实例...

    DllMain和多线程死锁[归类].pdf

    DllMain 是一个重要的 DLL 入口指针,需要遵守其顺序调用规则,否则可能会导致死锁。在 DllMain 中创建线程或终止线程时,需要注意这个规则,否则可能会导致死锁。同时,也可以使用其他方法来避免死锁,例如使用互斥...

    关于在类的构造函数和析构使用临界区函数导致的多线程死锁的一个经验之谈

    临界区函数是一种用于保护共享资源的机制,当多个线程访问同一个共享资源时,临界区函数可以确保只有一个线程可以访问该资源,从而避免了数据的混乱和不一致。 在类的构造函数和析构中使用临界区函数是一个常见的...

    多线程并发执行任务

    实例化这个类的对象后,调用`start()`方法启动线程。 2. 实现`Runnable`接口:创建一个类实现`java.lang.Runnable`接口,实现`run()`方法。然后将这个类的实例传入`Thread`的构造函数,创建`Thread`对象并启动。 `...

    delphi多线程调用dll

    综上所述,Delphi多线程调用DLL涉及到了线程创建、DLL加载与卸载、函数调用、线程安全、同步原语使用等多个方面,需要开发者对多线程编程有深入的理解和实践经验。正确地处理这些问题将能充分利用多核处理器的优势,...

    多线程 高并发

    例如,在一个应用中,一个线程负责用户界面的更新,另一个线程则处理后台数据计算,这样可以避免因长时间计算导致用户界面卡顿。 在创建多线程时,我们需要关注线程安全问题。线程安全意味着在多线程环境下,代码...

    java的hashMap多线程并发情况下扩容产生的死锁问题解决.docx

    此外,引入了ConcurrentHashMap类,这是一个专门为多线程设计的高效容器,其内部使用分段锁策略,可以在并发环境下保证线程安全,避免了类似HashMap扩容引发的死锁问题。 如果你在多线程环境中使用HashMap并遇到...

    简单多线程实例简单多线程实例简单多线程实例

    1. 继承`Thread`类:自定义一个类继承`java.lang.Thread`,重写`run()`方法,然后创建该类的实例并调用`start()`方法启动线程。 ```java class MyThread extends Thread { public void run() { // 线程执行的代码 ...

    多线程并发的demo

    而实现`Runnable`接口则更灵活,可以将`Runnable`对象作为参数传递给`Thread`,这样多个线程可以共享同一个`Runnable`实例,有利于资源的复用。 线程并发管理涉及到多个方面,包括线程同步、死锁避免、线程间通信等...

    java多线程死锁预防机制研究

    - **Lock饥饿**:指当多个线程竞争同一个锁时,某些线程可能长时间无法获得锁,这被称为锁饥饿。 - **Lock公平**:锁公平意味着锁的获取顺序按照线程请求锁的先后顺序进行。这样可以避免锁饥饿的问题。 ##### 3.2 ...

    多线程死锁

    明白死锁产生的原因,在程序中演示死锁产生并从而实现多线程陈旭解决死锁(deadlock)这一类问题。

    进程线程及死锁

    在操作系统中,死锁是一个重要的问题,因为它可能会导致系统的崩溃。 在实验中,我们使用互斥锁来避免死锁的发生。互斥锁是指一种机制,它可以防止多个进程同时访问同一个共享资源。通过使用互斥锁,我们可以避免...

    java 多线程同步方法的实例

    在Java编程语言中,多线程同步是一种控制多个线程并发执行的重要机制,它确保了共享资源的安全访问,防止数据不一致性和竞态条件的发生。本文将深入探讨Java中的多线程同步方法,并通过实例来阐述其工作原理。 首先...

    线程死锁的例子

    线程死锁是多线程编程中一个严重的问题,它发生在两个或多个线程相互等待对方释放资源,导致它们都无法继续执行。这个概念在计算机科学中尤为重要,因为并发执行是提高系统性能的关键手段,但如果不妥善处理,死锁...

    Java 线程同步调用

    在多线程环境中,尤其是当多个线程尝试同时访问和修改共享资源(如变量、数据结构等)时,如果没有适当的同步机制,很容易导致不可预测的行为,如死锁、活锁、竞态条件等。通过使用同步调用,开发者可以有效地控制对...

    java线程死锁实例

    Java线程死锁是多线程编程中一个常见的问题,它发生在两个或多个线程相互等待对方释放资源,导致它们都无法继续执行的情况。死锁的发生通常涉及到四个必要条件:互斥、请求与保持、不剥夺和循环等待。理解并解决Java...

Global site tag (gtag.js) - Google Analytics