有三个线程ID分别是A、B、C,请有多线编程实现,在屏幕上循环打印10次ABCABC…
package pcenshao.thread;
import java.util.concurrent.Semaphore;
public class SemaphoreABC {
static class T extends Thread{
Semaphore me;
Semaphore next;
public T(String name,Semaphore me,Semaphore next){
super(name);
this.me = me;
this.next = next;
}
@Override
public void run(){
for(int i = 0 ; i < 10 ; i ++){
try {
me.acquire();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(this.getName());
next.release();
}
}
}
public static void main(String[] args) {
Semaphore aSem = new Semaphore(1);
Semaphore bSem = new Semaphore(0);
Semaphore cSem = new Semaphore(0);
T a = new T("A",aSem,bSem);
T b = new T("B",bSem,cSem);
T c = new T("C",cSem,aSem);
a.start();
b.start();
c.start();
}
}
分享到:
相关推荐
Semaphore Semaphore分为单值和多值两种,前者只能被一个线程获得,...单个信号量的Semaphore对象可以实现互斥锁的功能,并且可以是由一个线程获得了“锁”,再由另一个线程释放“锁”,这可应用于死锁恢复的一些场
在Windows中,常见的同步对象有:信号量(Semaphore)、互斥量(Mutex)、临界段(CriticalSection)等。使用这些对象都分为三个步骤,一是创建或者初始化:接着请求该同步对象,随即进入临界区,这一步对应于互斥量的上锁...
信号量(Semaphore) 用来控制同时访问某个特定资源的操作数量,或者同时执行某个指定操作的数量 管理者一组虚拟的许可。acquire获得许可(相当于P操作),release释放许可(相当于V操作) 应用...
在Windows中,常见的同步对象有:信号量(Semaphore)、互斥量(Mutex)、临界段(CriticalSection)等。使用这些对象都分为三个步骤,一是创建或者初始化:接着请求该同步对象,随即进入临界区,这一步对应于互斥量的上锁...
解决这个问题的方法是使用dispatch_semaphore_t信号量来控制等待,直到遇到动画的时候等待,动画完成后再继续跑算法,这个方法只有在算法处于分线程时可以做到,否则会阻塞动画的执行。将塔做了对象抽象出来,将其...
5.5.3 信号量82 5.5.4 栅栏83 5.6 构建高效且可伸缩的结果缓存85 第二部分 结构化并发应用程序 第6章 任务执行93 6.1 在线程中执行任务93 6.1.1 串行地执行任务94 6.1.2 显式地为任务创建线程94 6.1.3 ...
17.4 信号量的使用 393 17.4.1 Semaphore类简介 393 17.4.2 Semaphore类的具体使用 394 17.5 队列 396 17.5.1 Queue接口介绍 396 17.5.2 PriorityQueue类的知识与使用 397 17.5.3 BlockingQueue接口...
//读者信号量 共允许3个读者同时进行 //线程体 bool who[3]={false}; DWORD WINAPI ReaderThreadFun(PVOID param) { CReader_WriterDlg * pWnd=(CReader_WriterDlg *)param; int iStep = 0; //申请信号量 if...
线程 ...................................................................................................................................................... 20 2.2. JVM 内存区域 .........................
2.1. 线程 ...................................................................................................................................................... 20 2.2. JVM 内存区域 .....................