Friday, March 22, 2019

Using CountDownLatch



https://www.cnblogs.com/evasean/p/7999582.html
面试中碰到这样一道题:有线程A和线程B,怎样控制线程B在线程A启动3秒后或者线程A运行结束后启动?
题目说明了线程B的启动时间是要满足两个条件:
1. 线程A启动3秒后
2. 线程A运行结束后
也就是说只要上面两个条件有一个满足,线程B就要启动。
用CountDownLatch控制调用时序,代码如下:
复制代码
 1 public class RunA implements Runnable {
 2     private CountDownLatch cdl;
 3     public RunA(CountDownLatch cdl){
 4         this.cdl = cdl;
 5     }
 6     @Override
 7     public void run() {
 8         // TODO Auto-generated method stub
 9         try {
10             Thread.sleep(1000);
11             cdl.countDown();
12             System.out.println("A run over");
13         } catch (InterruptedException e) {
14             // TODO Auto-generated catch block
15             e.printStackTrace();
16         }
17     }
18 }
复制代码

复制代码
 1 public class RunB implements Runnable {
 2     private CountDownLatch cdl;
 3     public RunB(CountDownLatch cdl){
 4         this.cdl = cdl;
 5     }
 6     @Override
 7     public void run() {
 8         // TODO Auto-generated method stub
 9         try {
10             cdl.await(3000, TimeUnit.MILLISECONDS);
11             System.out.println("B run over");
12         } catch (InterruptedException e) {
13             // TODO Auto-generated catch block
14             e.printStackTrace();
15         }
16     }

Labels

Review (572) System Design (334) System Design - Review (198) Java (189) Coding (75) Interview-System Design (65) Interview (63) Book Notes (59) Coding - Review (59) to-do (45) Linux (43) Knowledge (39) Interview-Java (35) Knowledge - Review (32) Database (31) Design Patterns (31) Big Data (29) Product Architecture (28) MultiThread (27) Soft Skills (27) Concurrency (26) Cracking Code Interview (26) Miscs (25) Distributed (24) OOD Design (24) Google (23) Career (22) Interview - Review (21) Java - Code (21) Operating System (21) Interview Q&A (20) System Design - Practice (20) Tips (19) Algorithm (17) Company - Facebook (17) Security (17) How to Ace Interview (16) Brain Teaser (14) Linux - Shell (14) Redis (14) Testing (14) Tools (14) Code Quality (13) Search (13) Spark (13) Spring (13) Company - LinkedIn (12) How to (12) Interview-Database (12) Interview-Operating System (12) Solr (12) Architecture Principles (11) Resource (10) Amazon (9) Cache (9) Git (9) Interview - MultiThread (9) Scalability (9) Trouble Shooting (9) Web Dev (9) Architecture Model (8) Better Programmer (8) Cassandra (8) Company - Uber (8) Java67 (8) Math (8) OO Design principles (8) SOLID (8) Design (7) Interview Corner (7) JVM (7) Java Basics (7) Kafka (7) Mac (7) Machine Learning (7) NoSQL (7) C++ (6) Chrome (6) File System (6) Highscalability (6) How to Better (6) Network (6) Restful (6) CareerCup (5) Code Review (5) Hash (5) How to Interview (5) JDK Source Code (5) JavaScript (5) Leetcode (5) Must Known (5) Python (5)

Popular Posts