`

多线程操作---可重入锁概念

阅读更多
//可重入锁的概念是 自己可以再次获得自己的内部锁,
//重进入的实现是通过每个锁关联一个请求计数和一个占有它的线程,当计数为0时,认为锁是未被占有的,线程请求一个未被占有的
//锁时,jvm将记录锁的占有者,并将请求计数置为一,如果同一个线程再次请求,计数器将递增,每次占用线程退出同步块
//计数器值将递减,直到计数器为0,锁释放
//如果内部锁不是可重入的,代码将死锁
 class Widget{
	public synchronized void doSomething(){}
}

 class LoggingWidget extends Widget{
	 public synchronized void doSomething(){
		 System.out.println("1111");
		 super.doSomething(); //这里需要再次获得自己的锁,如果锁不可重入将导致死锁
	 }
 }
分享到:
评论

相关推荐

    操作系统-创建多线程-读者写者

    ### 操作系统中的多线程创建与读者写者问题解析 #### 多线程概念介绍 在计算机科学中,线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。一个进程可以拥有多个线程,而每个...

    java多线程、锁的教程跟案例

    - ReentrantLock(可重入锁):提供与synchronized相似的功能,但更灵活,支持公平锁、非公平锁,以及可中断和定时尝试获取锁。 - ReadWriteLock(读写锁):ReentrantReadWriteLock提供了读写分离的锁,允许多个...

    程序实验2:11-多线程编程---实验报告.doc

    本实验报告涵盖了多线程编程的基本概念、线程的创建和管理、线程的同步、线程的资源释放、多线程编程的应用、线程的通信、多线程编程的挑战和优点等知识点,为读者提供了系统和深入的多线程编程知识。

    线程-线程池-锁-集合-Map-队列.docx

    线程的状态管理是多线程编程中非常重要的部分。Java线程有六种状态:NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING和TERMINATED。NEW表示线程刚创建还未启动,RUNNABLE表示线程在执行或等待CPU资源,BLOCKED表示...

    C#内存释放-线程控制-线程启动-线程暂停

    此外,`volatile`关键字可用于确保多线程环境中的数据一致性,确保所有线程都能看到最新值。 在Windows Forms应用程序中,主线程(UI线程)负责更新用户界面。因此,长时间运行的操作不应在主线程上执行,以免阻塞...

    Java多线程基础-01、数组概述.rar

    在Java编程语言中,多线程是程序设计中的一个重要概念,尤其在现代计算环境中,它能够充分利用多核处理器的能力,提高程序的并发性和执行效率。本资料“Java多线程基础-01、数组概述”将带你入门Java的多线程世界,...

    11-多线程爬虫-1(1).zip

    下面将详细解释多线程爬虫的基本概念、工作原理以及实现方法。 一、多线程基础 多线程是指一个程序内可以同时执行多个不同的任务或路径。在计算机系统中,线程是CPU调度的基本单位,多个线程可以在同一进程中并发...

    多线程-day02.docx

    【多线程编程详解】 ...了解并熟练掌握这些概念和工具,有助于编写高效、可靠的多线程Java应用程序。在实际编程中,根据需求选择适当的控制机制,可以有效地管理和同步线程,解决并发问题,提高系统的并行处理能力。

    自己动手写一把可重入锁测试案例

    本篇将基于《Java并发编程:自己动手写一把可重入锁》一文中的案例,深入探讨可重入锁的概念、原理以及如何实现一个简单的可重入锁。 可重入锁,顾名思义,就是可以被同一线程重复获取的锁。当一个线程已经持有锁的...

    线程互斥--多线程学习

    在计算机科学中,多线程是程序设计中的一个重要概念,特别是在现代操作系统中,它使得一个应用程序可以同时执行多个任务或子任务。线程互斥是多线程编程中确保资源安全共享的关键机制,防止多个线程同时访问同一共享...

    多线程demo程序-轻松掌握多线程技术

    这个名为"多线程demo程序-轻松掌握多线程技术"的项目,旨在帮助开发者理解和实践多线程的基本操作。我们将深入探讨其中涉及的知识点。 1. **线程创建**: 在大多数编程语言中,创建线程主要有两种方式:继承Thread...

    linux下的多线程实例--生产者消费者

    ### Linux下的多线程实例——生产者消费者模型 在Linux环境下进行多线程编程时,一个常见的应用场景就是通过生产者消费者模型来管理线程间的通信和数据共享问题。本篇文章将详细解析一个基于Linux环境下的多线程...

    c# 委托访问listbox多线程操作

    ### C# 委托访问 ListBox 的多线程操作 #### 概述 在 C# 编程语言中,为了确保界面的响应性并避免在执行长时间运行的任务时导致用户界面(UI)冻结,通常会采用多线程技术来处理后台任务。在本案例中,介绍了一种...

    易语言多线程操作

    在易语言中实现多线程操作,可以帮助开发者提高程序的效率和响应性,避免因长时间执行某项任务而导致的“假死”状态,提升用户体验。在远程控制应用中,多线程技术尤其重要,它能让不同任务同时进行,如数据传输、...

    Android 线程 多线程 Multi-thread

    ### Android中的线程与多线程技术详解 在Android开发中,线程和多线程技术是实现应用程序高效运行的关键所在。本篇文章将详细介绍Android线程的基础知识、使用方法及同步机制等内容。 #### 一、Android线程概述 ...

    【IT十八掌徐培成】Java基础第17天-05.多线程复制-多条跟踪.zip

    多线程复制-多条跟踪.zip”这个课程中,徐培成老师将深入讲解Java中的多线程技术及其在实际应用中的复制操作。 多线程允许程序并发地执行多个独立的任务,从而提高系统的效率和响应性。Java提供了多种方式来创建和...

    多线程编程指南--c版

    本书旨在帮助读者理解多线程的概念、工作原理,并通过丰富的示例代码,特别是Linux平台下的实现,来提升实际编程技能。以下是关于多线程编程的一些核心知识点: 1. **多线程概念**:多线程是指在一个进程中可以同时...

Global site tag (gtag.js) - Google Analytics