java并发信号量Semaphore
来源:互联网 发布:大数据营销经典案例 编辑:程序博客网 时间:2024/06/07 09:55
package com.blocking;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Semaphore;
public class ArrayCopy {
public static void main(String[] args) {
Semaphore semaphore=new Semaphore(2);
ExecutorService se = Executors.newCachedThreadPool();
ArrayCopy arrayCopy=new ArrayCopy();
se.submit(arrayCopy.new SemaphoreThread(semaphore, "a"));
se.submit(arrayCopy.new SemaphoreThread(semaphore, "b"));
se.submit(arrayCopy.new SemaphoreThread(semaphore, "c"));
se.submit(arrayCopy.new SemaphoreThread(semaphore, "d"));
se.submit(arrayCopy.new SemaphoreThread(semaphore, "e"));
se.submit(arrayCopy.new SemaphoreThread(semaphore, "f"));
se.submit(arrayCopy.new SemaphoreThread(semaphore, "g"));
se.submit(arrayCopy.new SemaphoreThread(semaphore, "h"));
se.shutdown();
}
// public static SemaphoreThread getInstance(Semaphore semaphore,String id){
// return new SemaphoreThread(semaphore, id);
// }
class SemaphoreThread implements Runnable{
Semaphore semaphore;
String id;
public SemaphoreThread(Semaphore semaphore,String id) {
this.semaphore=semaphore;
this.id=id;
}
@Override
public void run() {
try {
semaphore.acquire();
System.out.println("Thread:"+id+" acquire……");
Thread.sleep(2000);
semaphore.release();
System.out.println("Thread:"+id+" release……");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Semaphore;
public class ArrayCopy {
public static void main(String[] args) {
Semaphore semaphore=new Semaphore(2);
ExecutorService se = Executors.newCachedThreadPool();
ArrayCopy arrayCopy=new ArrayCopy();
se.submit(arrayCopy.new SemaphoreThread(semaphore, "a"));
se.submit(arrayCopy.new SemaphoreThread(semaphore, "b"));
se.submit(arrayCopy.new SemaphoreThread(semaphore, "c"));
se.submit(arrayCopy.new SemaphoreThread(semaphore, "d"));
se.submit(arrayCopy.new SemaphoreThread(semaphore, "e"));
se.submit(arrayCopy.new SemaphoreThread(semaphore, "f"));
se.submit(arrayCopy.new SemaphoreThread(semaphore, "g"));
se.submit(arrayCopy.new SemaphoreThread(semaphore, "h"));
se.shutdown();
}
// public static SemaphoreThread getInstance(Semaphore semaphore,String id){
// return new SemaphoreThread(semaphore, id);
// }
class SemaphoreThread implements Runnable{
Semaphore semaphore;
String id;
public SemaphoreThread(Semaphore semaphore,String id) {
this.semaphore=semaphore;
this.id=id;
}
@Override
public void run() {
try {
semaphore.acquire();
System.out.println("Thread:"+id+" acquire……");
Thread.sleep(2000);
semaphore.release();
System.out.println("Thread:"+id+" release……");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
阅读全文
0 0
- JAVA并发信号量 Semaphore
- java并发信号量Semaphore
- java并发之Semaphore(信号量)
- java 并发工具包 -信号量 Semaphore
- java并发之Semaphore(计数信号量)
- Java多线程/并发22、信号量Semaphore
- Java并发包之Semaphore信号量
- 并发中的信号量Semaphore
- Java多线程与并发库高级应用之信号量Semaphore
- Java并发-类库新组件 - Semaphore 理解:计数信号量
- JAVA并发编程-障碍器CyclicBarrier,计数器CountDownLatch,信号量Semaphore
- java并发编程系列之Semaphore信号量的使用
- Java并发编程实战--计数信号量(Semaphore)
- Java并发编程——Semaphore (信号量)和CountDownLatch
- 并发编程之信号量Semaphore
- 并发编程--Semaphore计数信号量
- 并发工具类:信号量Semaphore
- java信号量Semaphore
- __declspec(noreturn)使用
- Android Studio错误 (持续更新中三。关于点9图问题)
- (树)687. Longest Univalue Path
- JavaScript 高阶函数filter
- Spring自动创建异常抛出增强代理
- java并发信号量Semaphore
- maven上配置私服(简单易懂)
- ExpressRoute 路由要求
- 二维数组的动态分配及参数传递
- CreateThread与_beginthreadex本质区别
- xcopy
- 笔记8
- Android版本名称、版本号、API level对应关系
- sql语句中的count(*)和count(列表)的用法