`
absolute
  • 浏览: 190270 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

一个java 线程互斥体

阅读更多
java 代码
  1. package test;   
  2.   
  3. public final class Mutex {   
  4.     private long locks;   
  5.     private Thread owner;   
  6.   
  7.     public synchronized void lock() {   
  8.         Thread currentThread = Thread.currentThread();   
  9.         while (locks > 0 && currentThread != owner) {   
  10.             try {   
  11.                 wait();   
  12.             } catch (InterruptedException e) {   
  13.   
  14.             }   
  15.         }   
  16.         owner = currentThread;   
  17.         locks++;   
  18.     }   
  19.   
  20.     public synchronized void unlock() {   
  21.         Thread currentThread = Thread.currentThread();   
  22.         if (locks == 0 && owner != currentThread) {   
  23.             return;   
  24.         }   
  25.         locks--;   
  26.         if (locks == 0) {   
  27.             owner = null;   
  28.             notifyAll();   
  29.         }   
  30.     }   
  31. }   
分享到:
评论

相关推荐

    java 多线程synchronized互斥锁demo

    标题中的"java 多线程synchronized互斥锁demo"指的是一个示例,展示了如何在多线程环境下使用`synchronized`关键字创建互斥锁,确保同一时间只有一个线程可以访问特定的代码块或方法。 描述中的"一个多线程访问的同...

    操作系统实验 多线程同步与互斥 java编写 有界面

    在“操作系统实验 多线程同步与互斥 java编写 有界面”的实验中,可能需要设计一个图形用户界面(GUI),通过按钮或事件触发线程的创建和同步操作,直观地展示线程间的交互和同步效果。例如,可以模拟银行账户转账,...

    Java线程间同步互斥

    生产者和消费者共享一个数据,当数据为0 时,消费者不可访问,生产者可访问数据,每次访问数据加1;当数据到达100 时,生产者唤醒消费者,同时自身不可访问数据,消费者可访问数据,每次访问数据减1,直到数据为0,...

    JAVA实现线程间同步与互斥生产者消费者问题

    本项目通过一个生产者消费者问题的实例,展示了如何在Java中实现线程间的同步与互斥。 生产者消费者问题是经典的并发问题之一,它涉及到两个类型的线程:生产者和消费者。生产者负责生成数据(产品),而消费者则...

    线程间互斥2

    线程互斥的基本思想是,当一个线程正在访问共享资源时,其他试图访问该资源的线程会被阻塞,直到第一个线程完成其操作并释放资源。这通常通过使用锁(lock)来实现。在Java中,我们可以使用`synchronized`关键字或...

    线程 互斥.rar案例

    线程互斥是多线程编程中的一个关键概念,它涉及到如何在并发环境中确保资源的安全访问,以防止数据不一致性和竞态条件的发生。在这个"线程 互斥.rar"案例中,我们很可能会探讨如何在编程中实现线程间的互斥机制,以...

    操作系统中对于线程的同步与互斥问题的设计原理及代码

    线程互斥是指当多个线程访问同一临界资源时,同一时刻只允许一个线程进行操作,以防止数据竞争和不一致的状态。线程同步则是协调多个线程执行的顺序和条件,避免出现有害的并发行为,如死锁和饥饿。 在实现线程互斥...

    第20章 Part3 多线程互斥与协作.pdf

    ### 第20章 Part3:多线程互斥与协作 #### 一、互斥(Mutual Exclusion) 互斥是指在线程编程中确保多个线程不会同时访问同一资源的技术。这种技术非常重要,因为如果不加以控制,多个线程对共享资源的并发访问...

    Java线程.ppt

    互斥是指在同一时间内,只允许一个线程访问共享资源,通常通过`synchronized`关键字实现。同步是为了确保线程按预定的顺序执行,防止数据竞争,可以使用`wait()`, `notify()`和`notifyAll()`方法配合`synchronized`...

    实例讲述线程的同步互斥

    **线程互斥** 是线程同步的一种特殊形式,确保同一时间只有一个线程能够访问特定的资源。互斥锁是实现线程互斥的常用工具。当一个线程获取了互斥锁后,其他试图获取该锁的线程会被阻塞,直到持有锁的线程释放它。在...

    Java实现的进程同步与互斥(PV)

    下面是一个简单的Java PV操作示例,模拟了两个线程对一个共享资源(如打印机)的互斥访问: ```java import java.util.concurrent.Semaphore; public class PrintService { private Semaphore printerSemaphore =...

    线程互斥--多线程学习

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

    JAVA线程学习(源代码)

    本资源"JAVA线程学习(源代码)"提供了关于Java线程的源代码示例,帮助我们深入理解和实践线程的使用。 首先,我们要理解Java中的线程模型。Java线程由`java.lang.Thread`类或`java.util.concurrent.Executor`框架来...

    删除程序的 mutex 互斥句柄

    在编程领域,特别是涉及到多线程或多进程编程时,互斥体(Mutex)是一个至关重要的概念。互斥体主要用于同步多个线程或进程对共享资源的访问,确保同一时间只有一个线程或进程能够访问该资源,从而避免数据冲突和竞...

    关于线程(java)两天的课件

    Java线程有五种基本状态:新建(New)、可运行(Runnable)、运行(Running)、阻塞(Blocked)和死亡(Terminated)。这些状态之间的转换是通过调用特定的方法,如start()、sleep()、join()、wait()、notify()等...

    Java 多线程 PPT

    创建Java线程主要有两种方式: 1. 继承Thread类:创建Thread的子类并重写run()方法,然后通过调用start()方法启动线程。 2. 实现Runnable接口:创建一个实现了Runnable接口的类,实现run()方法,然后将该类的实例...

    Java语言中的线程同步互斥研究.pdf

    每一个程序都至少有一个线程,即程序本身。线程一般不拥有资源,但它与同属一个进程的其它线程共享进程所拥有的一切资源。同一进程中的多个线程之间可以并发执行。 4. 线程的实现方式 线程的实现方式一般有两种:...

    java线程.rar

    Java线程是Java编程语言中的一个核心概念,它允许程序同时执行多个任务,极大地提高了程序的效率和响应性。在Java中,线程是通过类`Thread`或实现`Runnable`接口来创建和管理的。Java线程模型是基于操作系统的原生...

    java线程使用教程

    Java线程是Java程序设计中非常重要的一个部分,掌握好线程的基础知识和高级用法对于写出高性能、高可用性的Java程序至关重要。无论是处理用户界面响应性、利用多核处理器优势还是进行并发编程,都需要深入理解和灵活...

Global site tag (gtag.js) - Google Analytics