`

Java多线程之信号量Semaphore

    博客分类:
  • java
阅读更多

SemaphoreDemo.java from caicongyang

 

package com.ccy.thread.demo;

import java.util.concurrent.Semaphore;

import org.junit.Test;

/**
 * 
 * <p> 
 * Title: SemaphoreDemo.java 
 * Package com.ccy.thread.demo 
 * </p>
 * <p>
 * Description: Java多线程之信号量Semaphore
 * <p>
 * @author Tom.Cai
 * @created 2015-12-27 下午1:40:07 
 * @version V1.0 
 *
 */
public class SemaphoreDemo {

	@Test
	public void test(){
		Resource3 res = new Resource3();
		new Thread(new worker(res)).start();
		new Thread(new worker(res)).start();
		new Thread(new worker(res)).start();
	}

}

class Resource3 {
	private Semaphore semaphore = new Semaphore(1);// 信号量
	private int count =10;
	
	public void move(){
		while(count >1){
			try {
				// 从此信号量获取一个许可,在提供一个许可前一直将线程阻塞
				semaphore.acquire();
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
			count = count -1;
			System.out.println(count);
			//释放这个信号量
			semaphore.release();
			System.out.println(Thread.currentThread().getName() +"move ing");
		}
	}
	
}

class  worker implements Runnable{
	private Resource3 res;
	
	public worker(Resource3 res){
		this.res  = res;
	}
	
	@Override
	public void run() {
		res.move();
	}
	
}



后记:

好吧,例子好像不是很恰当!

 

 

更多多线程精彩内容请继续关注我的博客http://blog.csdn.net/caicongyang

记录与分享,你我共成长 -fromcaicongyang

 

 

分享到:
评论

相关推荐

    JAVA 多线程之信号量(Semaphore)实例详解

    在Java多线程编程中,信号量Semaphore是一种非常重要的同步工具,用于控制对公共资源的访问。Semaphore类位于`java.util.concurrent`包下,它允许我们限制同时访问特定资源的线程数量。 ### Semaphore简介 信号量...

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

    JAVA多线程--信号量(Semaphore) 信号量(Semaphore)是一种多线程环境下的设施,负责协调各个线程,以保证它们能够正确、合理地使用公共资源。从概念上讲,信号量维护了一个许可集。 信号量的类型有两种:单值信号...

    使用信号量(Semaphore)实现线程的同步

    在多线程编程中,当多个线程试图同时访问一个有限的资源时,信号量可以帮助我们协调这些线程,确保资源的有序分配和释放。 信号量主要由两个操作组成:`P(Wait)操作`和`V(Signal)操作`。这两个操作通常被封装在...

    汪文君JAVA多线程编程实战(完整不加密)

    本书还涉及到了Java并发工具类,如Semaphore信号量、CyclicBarrier栅栏、CountDownLatch倒计时器等,这些都是Java并发编程中的重要工具,可以帮助开发者更精细地控制线程执行。另外,书中还会介绍如何使用Future和...

    semaphore控制多线程循序执行

    在"semaphore控制多线程循序执行"的场景中,我们通常会用到计数信号量,它的核心作用是限制同时访问特定资源的线程数量。例如,如果我们要实现一个打印队列,让多个线程按顺序打印任务,Semaphore就可以用来保证打印...

    java多线程经典案例

    Java提供了多种同步机制,如synchronized关键字、Lock接口(ReentrantLock、ReentrantReadWriteLock)以及Semaphore信号量。synchronized用于方法或代码块,可以保证同一时间只有一个线程执行特定代码,避免数据冲突...

    Java多线程编程实战指南-核心篇

    Java提供了多种同步工具,如synchronized关键字、wait()和notify()方法、Lock接口(包括ReentrantLock可重入锁)以及Semaphore信号量等。这些工具能够确保共享资源在多线程访问时的安全性,防止数据竞争和死锁的发生...

    Java 多线程 PPT

    Java提供了多种同步机制,包括synchronized关键字、Lock接口、Semaphore信号量等。synchronized可以修饰方法或代码块,确保同一时间只有一个线程能够执行特定的代码段;Lock接口提供了更灵活的锁机制,如...

    Java多线程下载器

    Java提供了多种并发控制机制,如synchronized关键字、Lock接口(如ReentrantLock)以及Semaphore(信号量)等,用于控制线程的访问权限和执行顺序。 3. **网络I/O**:Java的`java.net`包提供了处理网络通信的基础...

    Java多线程编程

    6. **并发工具类**:Java并发包(`java.util.concurrent`)提供了一系列高级并发工具,如`Semaphore`(信号量)、`CyclicBarrier`(循环屏障)、`CountDownLatch`(倒计时器)和`ExecutorService`等,它们可以帮助...

    java多线程设计

    3. 线程同步:Java提供了多种同步机制,如synchronized关键字、volatile变量、Lock接口(ReentrantLock等)、Semaphore信号量、CyclicBarrier屏障等,用于解决多线程环境下资源竞争和数据一致性问题。 二、不可变...

    java多线程示例

    3. Semaphore:信号量,用于限制同时访问某个资源的线程数量。 4. Executors框架:提供线程池服务,有助于管理和控制线程的生命周期。 六、线程优先级 Java中的线程优先级由Thread类的静态常量定义,如MIN_PRIORITY...

    java多线程编程

    Semaphore用于资源的限流和信号量控制。 视频教程中可能涵盖了线程安全的数据结构,如ArrayList和LinkedList在多线程环境下的问题,以及如何使用CopyOnWriteArrayList和ConcurrentLinkedQueue等线程安全的集合。还...

    Java多线程实例图形版

    总结起来,"Java多线程实例图形版"是一个结合理论与实践的教学资源,通过“哲学家就餐问题”这一经典案例,帮助开发者理解多线程的基本概念、并发问题以及解决策略。通过学习这个实例,不仅可以掌握Java多线程编程的...

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

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

    精通java多线程

    Java提供了多种同步工具,如synchronized关键字、Lock接口(ReentrantLock、ReadWriteLock等)、Semaphore信号量和CountDownLatch计数器。合理使用这些同步工具可以避免死锁、活锁和饥饿等问题。 五、线程间通信 ...

    java多线程设计模式_java_设计模式_多线程_多线程课题_

    Java提供了多种同步机制,如synchronized关键字、wait()和notify()方法、ReentrantLock重入锁、Semaphore信号量等。synchronized用于保证同一时刻只有一个线程访问共享资源,而wait()和notify()用于线程间的通信,...

    深入学习:Java多线程编程

    2. **线程同步**:Java提供了多种线程同步机制,如synchronized关键字、wait/notify机制、Lock接口(ReentrantLock、读写锁等)和Semaphore信号量。这些机制用于避免并发问题,如数据竞争、死锁和活锁等。 3. **...

    Java多线程资料

    - Semaphore:信号量,控制同时访问特定资源的线程数量。 - Phaser:更强大的同步工具,支持分阶段的同步。 7. **死锁、活锁与饥饿** - 死锁:两个或多个线程相互等待对方释放资源,导致都无法继续执行。 - ...

    JAVA多线程端口扫描器

    4. **并发控制**:在多线程环境中,为了保证数据的一致性和避免资源争抢,需要使用并发控制机制,如synchronized关键字、Lock接口、Semaphore信号量等。在端口扫描器中,可能需要这些机制来协调各线程间的操作,确保...

Global site tag (gtag.js) - Google Analytics