`

请教一个关于java多线程的问题

    博客分类:
  • java
阅读更多

如果一个线程进入了一个同步块或者同步方法,在执行的过程中如果抛出了异常,那这个线程会不会释放被同步对象上的锁?

这个问题问的好。

 如果你用的是jdk1.4或者以下版本,用的是synchronized同步块,那么如果一个线程调用同步方法的时候出现了异常,那么不会释放锁,会进入死锁状态。
jdk1.5以上的版本引入了新的处理方法:lock。
Lock是一个接口,它位于Java 5.0新增的java.utils.concurrent包的子包locks中,实现 Lock接口的类具有与synchronized关键字同样的功能,但是它更加强大一些。lock()方法用于锁定对象,unlock()方法用于释放对对象的锁定,他们都是在Lock接口中定
义的方法。位于这两个方法之间的代码在被执行时,效果等同于被放在synchronized同步块
中。一般用法是将需要在lock()和unlock()方法之间执行的代码放在try{}块中,并且在finally{}块中调用unlock()方法,这样就可以保证即使在执行代码抛出异常的情况下,对象
的锁也总是会被释放,否则的话就会为死锁的产生增加可能。

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    java多线程打字程序

    是一个java多线程打字程序,由于我们期末要用,所以到这里请教来了,你们这破网站还总政那个没用的麻烦不啊?

    Java心得 学JAVA必看

    这包括但不限于Java基础语法、面向对象编程思想、集合框架、多线程编程、异常处理等内容。只有建立了完整的知识框架,才能更好地理解和运用Java语言。 #### 3. 实践出真知 理论学习固然重要,但更重要的是实践。...

    java实验代码

    实验11 多线程处理  实验12 I/O及文件处理  实验目的:掌握并使用Java中的I/O和文件。  心得体会:对于该实验,由于比较难,只是基本掌握了文件读写的方法和规则,还有待17周JAVA实训时继续攻坚克难。 ...

    java实验,包括源程序和题目要求(很详细)

    7. **多线程**:Java提供了强大的多线程支持,通过Thread类或Runnable接口可以实现并发执行。理解线程同步和互斥的概念,以及synchronized关键字、wait()、notify()方法的使用,是进行并发编程的基础。 8. **设计...

    Java Learning Path process外文文献.doc

    实际上,JDK的学习并不简单,有两个问题常常困扰着Java程序员:一个是CLASSPATH问题,从原理上讲,如何明确JRE ClassLoader加载Class的方式;另一个是包与import的问题,如何寻找类的方法。这两个问题需要弄清楚,这...

    JAVA-GAME-SOURCE-CODE.rar_Java Game code

    8. **多线程**:为了提高性能,游戏可能会使用多线程来处理不同任务,比如一个线程负责渲染,另一个线程处理游戏逻辑。 9. **资源管理**:游戏中往往有音效、图片、字体等资源,Java中的`InputStream`和`...

    学不会的java消不了的忧愁

    通过上述分析,我们可以看出,Java的学习不仅考验一个人的技术能力,更考验其意志力和解决问题的能力。对于初学者而言,遇到困难时应当保持积极乐观的心态,通过不断的实践和学习,逐渐提升自己的技术水平。同时,...

    java培训总结.doc

    这种学习态度和解决问题的能力对于成为一个优秀的Java工程师至关重要。 Java工程师的角色并不仅仅是编写代码,还包括了代码的维护、优化、测试以及与团队的沟通协调。因此,良好的职业素养和注重细节的态度是必不可...

    JAVA程序员的心得

    每个人都有自己的优势和专长,在遇到难题时不妨多请教同行或者资深专家。参加技术交流会、加入技术社群等方式都能够拓宽视野、增长见识。同时,也可以将自己的经验和教训分享给他人,这样既能帮助别人成长,也能促使...

    北师珠信院Java期末考试复习题.zip

    2. **Chapter 2 - 环境配置与第一个程序**:会涉及安装JDK,设置环境变量,以及编写和运行简单的"Hello, World!"程序。 3. **Chapter 3 - 数据类型与变量**:讲解基本数据类型(整型、浮点型、字符型、布尔型)和...

    Java自学之路——(精华版)

    同时,参与开源项目,或者自己设计项目,如开发一个简单的博客系统,将所学知识应用到实践中。 四、优先处理关键任务 在学习过程中,应优先掌握核心概念和技术,如面向对象编程、异常处理、集合框架等。这些是Java...

    2022年java学习心得体会例文.docx

    Java学习心得体会 Java作为一种广泛应用的编程语言,其学习过程涵盖了多个...总之,Java学习是一个持续的过程,从基础知识到高级特性的掌握,需要时间和努力。坚持不懈地学习,结合实践,才能真正成为Java编程的高手。

    java实训报告集锦7篇.docx

    1. Java多线程:在本实训中,使用Thread类创建显示时钟的线程,确保时钟动画的实时性。 2. GUI设计:运用Swing组件构建时钟界面,设置字体、颜色和布局,如使用JFrame、JLabel等。 3. 日历和时间处理:使用...

    基于JAVA的企业网站管理系统.doc

    在论文中,作者提到将Java理论知识应用于实际项目,这涵盖了Java的基础语法、类与对象、异常处理、多线程、集合框架、IO流等核心概念。在开发企业网站管理系统时,可能会涉及到数据库交互,因此Java的JDBC(Java ...

    java基础入门.docxjava基础入门.docx

    - **多线程支持**:Java内置了对多线程的支持,允许开发人员轻松地编写并发程序。 - **静态类型检查**:Java是一种静态类型语言,在编译阶段就会进行类型检查,有助于提前发现并解决类型错误。 #### 二、Java基础...

    java语言复习药店

    8. **多线程**: 复习线程的创建(通过Thread类或Runnable接口)、线程同步(synchronized关键字、wait/notify机制)、线程池等概念。 9. **网络编程**: Java提供了Socket编程接口,可以用于实现客户端和服务端的...

    JAVA网络(单机也可)聊天室加报告

    随着大众化、小型化趋势的加剧,网络聊天在当今已经不算新鲜事物,聊天室可以更好的方便大家交流,请教或探讨问题,同时也能开阔视野。但大多数网络聊天都需要借助位于Internet的服务器,这就给那些具有大规模内部...

    Java实习总结范文.pdf

    此外,实习还强化了对Java集合框架、异常处理、IO流、多线程、网络编程等进阶主题的理解。 其次,实习期间的项目实践让我们的编程能力得到了显著提升。在实际项目中,我们不仅要编写代码,还要考虑代码的可读性、可...

    Java面试考核目标.docx

    - 资深/专家:能够对现有代码进行优化,具有重构能力,熟悉多线程编程等高级特性。 2. **数据库、缓存、事务等** - **考核点**:熟悉关系型数据库原理,了解SQL优化方法,掌握缓存机制(如Redis)及事务管理。 -...

    java实习日记和实习报告-4400字.docx

    - Java语言的优势在于其简单性、面向对象、多线程、分布性、跨平台和安全性,这些特性使得Java成为企业级应用开发的首选语言。 - 实习生首先学习了Java编程环境,包括编译器、解释器和开发工具如Visual J++,这有...

Global site tag (gtag.js) - Google Analytics