java 主线程等待_Java实现主线程等待子线程
本文介绍两种主线程等待子线程的实现方式,以5个子线程来说明:
1、使用Thread的join()方法,join()方法会阻塞主线程继续向下执行。
2、使用Java.util.concurrent中的CountDownLatch,是一个倒数计数器。初始化时先设置一个倒数计数初始值,每调用一次countDown()方法,倒数值减一,他的await()方法会阻塞当前进程,直到倒数至0。
join方式代码如下:
package com.test.thread;
import java.util.ArrayList;
import java.util.List;
public class MyThread extends Thread
{
public MyThread(String name)
{
this.setName(name);
}
@Override
public void run()
{
System.out.println(this.getName() + " staring...");
System.out.println(this.getName() + " end...");
}
/**
* @param args
*/
public static void main(String[] args)
{
System.out.println("main thread starting...");
List list = new ArrayList();
for (int i = 1; i <= 5; i++)
{
MyThread my = new MyThread("Thrad " + i);
my.start();
list.add(my);
}
try
{
for (MyThread my : list)
{
my.join();
}
}
catch (InterruptedException e)
{
e.printStackTrace();
}
System.out.println("main thread end...");
}
}
运行结果如下:
main thread starting...
Thrad 2 staring...
Thrad 2 end...
Thrad 4 staring...
Thrad 4 end...
Thrad 1 staring...
Thrad 1 end...
Thrad 3 staring...
Thrad 3 end...
Thrad 5 staring...
Thrad 5 end...
main thread end...
CountDownLatch方式代码如下:
package com.test.thread;
import java.util.concurrent.CountDownLatch;
public class MyThread2 extends Thread
{
private CountDownLatch count;
public MyThread2(CountDownLatch count, String name)
{
this.count = count;
this.setName(name);
}
@Override
public void run()
{
System.out.println(this.getName() + " staring...");
System.out.println(this.getName() + " end...");
this.count.countDown();
}
/**
* @param args
*/
public static void main(String[] args)
{
System.out.println("main thread starting...");
CountDownLatch count = new CountDownLatch(5);
for (int i = 1; i <= 5; i++)
{
MyThread2 my = new MyThread2(count, "Thread " + i);
my.start();
}
try
{
count.await();
}
catch (InterruptedException e)
{
e.printStackTrace();
}
System.out.println("main thread end...");
}
}
运行结果如下:
main thread starting...
Thread 2 staring...
Thread 2 end...
Thread 4 staring...
Thread 4 end...
Thread 1 staring...
Thread 1 end...
Thread 3 staring...
Thread 3 end...
Thread 5 staring...
Thread 5 end...
main thread end..
转自http://blog.csdn.net/nms312/article/details/30115055
java 主线程等待_Java实现主线程等待子线程相关推荐
- Java多线程面试题:子线程循环10次,接着主线程循环100,接着又回到子线程循环10次, 接着再回到主线程又循环100,如此循环50次
近在学习多线程,特贴在这里,并附上自己所作答案(参考与张孝祥老师的方法). 题目如下: 子线程循环10次,接着主线程循环100,接着又回到子线程循环10次, 接着再回到主线程又循环100,如此循环50 ...
- 多线程学习--案例-子线程循环10次,接着主线程循环100,接着又回到子线程循环10次,接着再回到主线程又循环100,如此循环50次
子线程循环10次,接着主线程循环100,接着又回到子线程循环10次,接着再回到主线程又循环100,如此循环50次,请写出程序. package Demo4; public class ThreadTe ...
- java多线程交替打印_java多线程 更优雅的实现线程同步:交替打印A、B LockSupport实现...
一 问题概述 线程或者进程之间有两种关系 同步和互斥,我们通常实现同步方法是使用线程的等待唤醒机制,而等待唤醒机制的使用是建立在互斥的继承上的.但是同步线程并不一定是必须要实现互斥的.比如一个线程打印 ...
- java中主线程首先执行_java经典面试题:子线程先运行30次主线程,主线程40次,如此循环50次?...
最近偶遇这道题,网上相似的题都是循环次数不一样.然而我百度搜到的论坛或者博客感觉都不太对,运行有穿插.请给出正确结果. 我们假使所有人都引入了业务对象. 并且我有疑问?感觉题目本意不是new Thre ...
- 主线程等待一个 无阻塞函数 死循环子线程的安全退出
子线程: procedure TreadThread.Execute; begin inherited; FreeOnTerminate := True; while not Ter ...
- java for循环 等待_java – 主题:忙等待 – 空循环
参见英文答案 > Is this starvation? 2个 在我们的大学课程中,我们学习了Threads并使用" ...
- java 条件 等待_java – 如何唤醒等待相同条件的所有线程?
我有以下情况.几个线程正在等待相同的条件.当得到通知时,所有应该停止等待,更改标志并返回对象: public Object getObject(){ lock.lock(); try { while ...
- java暂停的方法_Java使用join方法暂停当前线程
目标线程的join方法暂停当前线程,直到目前线程完成(从run()方法返回),供大家参考,具体内容如下 Java代码: package Threads; import java.io.IOExcept ...
- java 监听配置文件_java读取系统Properties配置文件利用线程实时监控配置文件变化...
package util; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundExcept ...
最新文章
- Go语言中的匿名函数和闭包的样子
- who is the one who actually know the essential things in life?
- python 中用什么键缩进 —— tab 还是空格?
- vue项目如何放到服务器上,Vue项目怎么上传到云服务器
- 利益相关者软件工程_如何向利益相关者解释用户体验的重要性
- 自动添加html结束标志,HTML:包含或排除可选的结束标记?
- fastdfs java token_fastdfs-client-java操作fastdfs
- Sharing A Powerful Tool For Calculate Code Lines
- android开源SlidingMenu使用
- Python学习入门基础教程(learning Python)--6 Python下的list数据类型
- linux vnc 蓝屏,【典型问题分析 之 蓝屏问题】
- opencv 基于haar特征的级联分类器实现图象识别原理
- 代码背景护眼色设置RGB
- 微信小程序实现全局登陆状态
- 向量设计丨导师简介丨客户案例丨商业活动丨跨界合作
- Chrome断点JS寻找淘宝签名sign
- 火狐浏览器打开书签 不要在新页面打开书签
- Day 3 Linux(目录篇 、文件操作篇 、压缩解压相关命令, 编辑器vi 、编译器gcc 、调试器gdb、 makefile工程管理器初学)
- java dh_java DH加密算法备忘
- VPS和云服务器的区别