代码详解の使用CountDownLatch解决面试问题:T1和T2线程执行计算,T3线程计算结果的统计
来源:互联网 发布:郝斌老师c语言笔记 编辑:程序博客网 时间:2024/04/30 09:36
package com.sdmjhca.springBootDemo.synchronizedtest;import java.util.concurrent.CountDownLatch;/** * 例子:T1和T2线程执行计算,T3线程进行T1和T2结果的统计 * 思路定义一个“锁计数器”为2的线程并发类,T3通过await方法进行锁等待,T1执行完成后计数器-1,T2完成后计数器-1; * 当计数器为0后,T3开始执行统计方法,得到最终计算结果 * @author JHMI on 2017/8/18. */public class SynchronizedMain { private static CountDownLatch start = new CountDownLatch(1); private static CountDownLatch end = new CountDownLatch(2); private static int i = 1; private static int j = 1; public static void main(String args[]) throws InterruptedException { Thread t1 = new Thread(new Runnable() { @Override public void run() { try { start.await(); System.out.println("T1开始执行"); //SynchronizedTest.staticIn.method1(); i++; //Thread.sleep(1000); end.countDown(); System.out.println("T1计算结束"); } catch (InterruptedException e) { e.printStackTrace(); } } }); Thread t2 = new Thread(new Runnable() { @Override public void run() { try { start.await(); System.out.println("T2开始执行"); // SynchronizedTest.staticIn.method2(); j++; //Thread.sleep(1000); end.countDown(); System.out.println("T2执行结束"); } catch (InterruptedException e) { e.printStackTrace(); } } }); Thread t3 = new Thread(new Runnable() { @Override public void run() { try { start.await(); System.out.println("T3开始执行,进入等待状态"); end.await(); System.out.println("获得锁 开始执行T3"); } catch (InterruptedException e) { e.printStackTrace(); } //Thread.sleep(1000); int c = i+j; System.out.println("统计结果="+c); System.out.println("T3执行结束"); } }); t1.start(); t2.start(); t3.start(); start.countDown(); /* i = i+j; System.out.println("i="+i);*/ }}
阅读全文
0 0
- 代码详解の使用CountDownLatch解决面试问题:T1和T2线程执行计算,T3线程计算结果的统计
- 现有三个线程T1,T2,T3 三个线程依次执行
- 实现T1线程执行后再执行T2线程,之后再执行T3线程
- 有三个线程T1,T2,T3,下面方法可以确保它们按顺序执行的有()该线程继续执行
- 1.如果你有三个线程,分别为T1,T2,T3,如何让线程T2在线程T1之后执行,在线程T3之前执行。
- 1)现在有T1、T2、T3三个线程,你怎样保证T2在T1执行完后执行,T3在T2执行完后执行?
- 现在有T1、T2、T3三个线程,你怎样保证T2在T1执行完后执行,T3在T2执行完后执行
- 1)现在有T1、T2、T3三个线程,你怎样保证T2在T1执行完后执行,T3在T2执行完后执行?
- 现在有T1、T2、T3三个线程,你怎样保证T2在T1执行完后执行,T3在T2执行完后执行?
- 现在有T1、T2、T3三个线程,怎样保证T2在T1执行完后执行,T3在T2执行完后执行
- 现在有T1、T2、T3三个线程,你怎样保证T2在T1执行完后执行,T3在T2执行完后执行?
- 现在有T1、T2、T3三个线程,你怎样保证T2在T1执行完后执行,T3在T2执行完后执行
- 有三个线程T1 T2 T3,如何保证他们按顺序执行
- 有三个线程T1 T2 T3,如何保证他们按顺序执行
- 用线程池解决多用户计算的问题
- java 使用Callable和Future返回线程执行的结果
- CountDownLatch使用countDown方法来触发其他等待线程再执行的问题
- SRM 605 T1 T2 T3
- [Hdu] 4417 Super Mario (主席树模板题)
- java各种进制之间的相互转化
- 2017.08.18【NOIP提高组】模拟赛B组 沙耶的玩偶(doll)
- asp.net c# 异步日志通用类(1)
- Hibernate的悲观锁、乐观锁
- 代码详解の使用CountDownLatch解决面试问题:T1和T2线程执行计算,T3线程计算结果的统计
- CodeForces
- C++基本语法,入门及提高(5)
- C++11 lambda 表达式解析
- hdu6141-多校8&最小树形图&朱刘算法-I am your Father!
- IntelliJ 设置全局maven
- 233A. Perfect Permutation
- 邮件服务
- springmvc controller跳转后jsp页面无法加载静态资源css,图片等错误解决方法