请使用CountDownLatch编写一个程序,实现以下效果:
要求:
1. 线程A打印:”开始计算”
2. 线程B:计算1--100所有数的累加和,并打印结果。
注意:
要求线程A必须先执行
public class Test01 {
public static void main(String[] args) throws InterruptedException {
// 创建CountDownLatch对象
CountDownLatch countDownLatch = new CountDownLatch(1);
MyThreadA m1 = new MyThreadA(countDownLatch);
m1.start();
Thread.sleep(1000);
MyThreadB m2 = new MyThreadB(countDownLatch);
m2.start();
}
}
==========================================
public class MyThreadA extends Thread{
public CountDownLatch countDownLatch;
public MyThreadA(CountDownLatch countDownLatch) {
this.countDownLatch = countDownLatch;
}
@Override
public void run() {
System.out.println("开始计算!");
try {
countDownLatch.await();
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("计算完毕");
}
}
====================================================
public class MyThreadB extends Thread {
public CountDownLatch countDownLatch;
public MyThreadB(CountDownLatch countDownLatch) {
this.countDownLatch = countDownLatch;
}
@Override
public void run() {
int sum = 0;
for (int i = 1; i <=100 ; i++) {
sum += i;
}
System.out.println("总和:"+sum);
countDownLatch.countDown();
}
}
===================================================
public class Test01 {
public static void main(String[] args) {
/*请使用Semaphore编写一个程序,实现以下效果:
要求:
1.有10名游客要参观展览室,
2.展览室同时只允许最多“三个游客”参观,
3.每个游客参观时间2秒。*/
MyThread m = new MyThread();
for (int i = 1; i <= 10; i++) {
new Thread(m).start();
}
}
}
public class MyThread implements Runnable{
Semaphore semaphore = new Semaphore(3);
@Override
public void run() {
try {
semaphore.acquire();
System.out.println(Thread.currentThread().getName()+":"+"在参观");
Thread.sleep(2000);
semaphore.release();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
12-19
180
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)