`
bbwang8088
  • 浏览: 45735 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

java中的Semaphore

 
阅读更多

由于线程之间存在资源的竞争,所有根据CPU的调节,线程的执行先后是随机的。

如果某些线程执行的时候,希望独占CPU资源,可以使用Semaphore信号量。

 

线程的定义可以如下:

import java.util.concurrent.Semaphore;

public class SubThread extends Thread{

	private Semaphore semaphore;  
	
    public SubThread(Semaphore semaphore){  
        this.semaphore=semaphore;  
    }  
      
    public Semaphore getSemaphore() {  
        return semaphore;  
    }  
    
	@Override
	public void run() {
		// TODO Auto-generated method stub
		int i = 0;
		while( i < 100){
			i++;
			System.out.println("No."+i+" Sub thread11111111 is running!");
			try {
				Thread.sleep(100);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		semaphore.release();
	}

}

 

该线程的利用方法如下:

 

    public static void main(String[] args) {
        try {
            SubThread subThread = new SubThread(new Semaphore(0));
            SubThread2 subThread2 = new SubThread2();
            SubThread3 subThread3 = new SubThread3();
            subThread.start();
            subThread.getSemaphore().acquire();
        } catch (InterruptedException e) {
            e.printStackTrace();
        } 
        System.out.println("Main thread is running!");
    }

 

 该线程会执行完再执行接下来的代码。

 

分享到:
评论

相关推荐

    Java中Semaphore(信号量)的使用方法

    Java中Semaphore(信号量)的使用方法 Semaphore(信号量)是一种非常重要的并发访问控制机制,它可以用来保护一个或者多个共享资源的访问。Semaphore内部维护了一个计数器,其值为可以访问的共享资源的个数。一个...

    java.Semaphore(处理方案示例).md

    java.Semaphore(处理方案示例).md

    java并发之Semaphore信号量.md

    Semaphore是计数信号量。Semaphore管理一系列许可证。每个acquire方法阻塞,直到有一个许可证可以获得然后拿走一个许可证;每个release方法增加一个许可证,这可能会释放一个阻塞的acquire方法。然而,其实并没有...

    Java中的Semaphore:深入理解与应用实践

    在Java的并发编程中,Semaphore 是一个非常重要的同步辅助类,它用于控制对共享资源的访问。Semaphore 通过维护一个许可集来控制同时访问特定资源的线程数量,从而避免资源竞争和潜在的性能问题。本文将详细介绍 ...

    JAVA Semaphore.docx

    Java中的Semaphore是一个并发控制工具,属于java.util.concurrent包下的一个类,它的主要作用是限制对共享资源的访问权限,以实现多线程环境中的同步和限流。Semaphore类提供了信号量的概念,允许我们设定一个固定的...

    深入浅出java Semaphore.pdf

    Semaphore,中文通常称为信号量,是Java并发编程中的一种重要工具,自JDK 1.5版本起被引入。它主要用于控制对特定资源的并发访问,确保资源得到合理的使用。Semaphore维护了一组虚拟的许可,其数量在创建时由用户...

    Semaphore 源码解析

    在Semaphore中,`acquire()`方法用于获取一个许可,如果当前许可数足够,线程将获得同步状态并减少许可数,否则线程将被放入同步队列等待。`release()`方法则是释放一个许可,增加许可数,并有可能唤醒同步队列中...

    Java中的Semaphore类最全讲义

    1.2 Semaphore概述 Semaphore的基本用法 2.1 创建Semaphore对象 2.2 acquire()方法 2.3 release()方法 控制资源访问数量 3.1 场景介绍 3.2 使用Semaphore控制资源访问 实现有界资源池 4.1 场景介绍 4.2 使用...

    Java多线程Semaphore工具的使用详解.rar

    Java多线程编程是开发高并发应用的关键技术之一,Semaphore工具是Java并发包(java.util.concurrent)中的一个重要组件,用于控制同时访问特定资源的线程数量。本篇将深入讲解Semaphore的基本概念、工作原理以及如何...

    java线程并发semaphore类示例

    在Java中,Semaphore类提供了对并发线程进行计数的许可管理,允许我们限制同时访问特定资源的线程数量。这在处理并发任务时非常有用,例如限制数据库连接池的大小、限制同时访问硬件设备的数量或者限制某个服务的...

    JAVA SEMAPHORE

    java buffer using Semaphore a kind of example of writer and reader

    java并发核心Semaphore 的使用思路.docx

    Semaphore是Java并发编程中的一种重要工具,它是一个计数信号量,可以用来限制对共享资源的访问权限。在Java的`java.util.concurrent`包中,Semaphore类提供了对多个线程并发访问控制的能力,允许我们设置一个固定的...

    Java信号量Semaphore

    另外等待的5个人中可以是随机获得优先机会,也可以是按照先来后到的顺序获得机会,这取决于构造Semaphore对象时传入的参数选项。单个信号量的Semaphore对象可以实现互斥锁的功能,并且可以是由一个线程获得了“锁”...

    semaphore控制多线程循序执行

    本示例中,我们将深入探讨如何使用Semaphore来控制多线程的循序执行。 Semaphore是一种计数信号量,它可以有正整数值,用于管理多个线程对公共资源的访问。当信号量的值为正时,线程可以获取一个许可(或称资源),...

    Java基于Semaphore构建阻塞对象池

    在Java并发编程中,Semaphore是一种重要的同步工具类,它提供了对有限资源的访问控制,能够有效地管理和限制同时访问特定资源的线程数量。Semaphore在Java 5中被引入,是java.util.concurrent包的一部分,它是基于...

    java实现限流,封装的工具类

    在Java中,`java.util.concurrent.Semaphore` 是一个计数信号量,可以用来控制同时访问特定资源的线程数量。在实现限流时,我们可以通过初始化Semaphore实例并设定许可证数量,从而限制并发线程数。例如: ```java ...

    Java 信号量Semaphore的实现

    Java 信号量Semaphore是Java并发编程中的一种机制,用于控制多个线程的并发执行。Semaphore的实现主要是通过计数器来实现的,每个Semaphore对象都维护着一个计数器,用于记录当前可用的许可证数量。 在Java中,...

    JavaApi中文参考手册.zip

    5. **多线程**:`java.lang.Thread`和`java.util.concurrent`包提供了线程管理和并发控制,如`Runnable`、`Thread`、`ExecutorService`、`Semaphore`等。 6. **反射机制**:`java.lang.reflect`包允许在运行时检查...

    java jdk api中文开发文档(免币)

    13. **并发工具类**:Java并发包(java.util.concurrent)包含了很多高级并发工具,如ExecutorService、Semaphore、CountDownLatch等。 14. **国际化**:Java提供了Locale和ResourceBundle类,支持多语言环境下的...

    JAVA多线程--信号量(Semaphore)_.docx

    在Java中,使用Semaphore可以轻松地实现多线程环境下的资源访问控制,例如: ```java import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent....

Global site tag (gtag.js) - Google Analytics