首先要注意的是: 1、java的Main线程结束之后,子线程还在运行。其实主线程已经退出了,但是JVM守护线程会等待所有的线程结束,才会退出。所以我们可以看到,子线程依然在继续执行。 2、那么如何实现主线程等待子线程的执行之后再结束,这个就要用到CountDownLatch,设置要执行的线程的个数, ...
分类:
编程语言 时间:
2016-09-12 18:56:45
阅读次数:
150
1. join()介绍
join() 定义在Thread.java中。
join() 的作用:让“主线程”等待“子线程”结束之后才能继续运行。这句话可能有点晦涩,我们还是通过例子去理解:
// 主线程
public class Father extends Thread {
public void run() {
Son s = new Son();
...
分类:
编程语言 时间:
2016-06-23 13:01:31
阅读次数:
308
join用于主线程等待子线程运行完毕它的run方法,再继续执行下面的代码。 join() = join(0),主线程无限等待子线程执行完毕。 join(n milliseconds),主线程只等待n毫秒,n毫秒后无论子线程是否执行完毕,主线程都将继续执行下面的代码。 package com.jack
分类:
编程语言 时间:
2016-02-18 18:01:29
阅读次数:
200
Java5开始引入的Concurrent并发软件包里面的CountDownLatch其实可以把它看作一个计数器,只不过这个计数器的操作是原子操作,同时只能有一个线程去操作这个计数器,也就是同时只能有一个线程去减这个计数器里面的值。CountDownLatch的一个非常典型的应用场景是:有一个任务想要...
分类:
编程语言 时间:
2015-12-05 19:27:21
阅读次数:
187
主线程等待子线程的多种方法
synchronized浅析
sleep 是静态方法,Thread.sleep(xx)谁调用谁睡眠。
join 是合并方法,当前线程调用其他线程xx.join()则等到xx结束才能运行
yield 当前线程让出cpu进入就绪队列。
wait,noitfy,synchronized配合使用对资源进行管理。
synchronized(this)以及非static...
分类:
编程语言 时间:
2015-06-15 11:18:09
阅读次数:
128
今天讨论一个入门级的话题, 不然没东西更新对不起空间和域名~~工作总往往会遇到异步去执行某段逻辑, 然后先处理其他事情, 处理完后再把那段逻辑的处理结果进行汇总的产景, 这时候就需要使用线程了.一个线程启动之后, 是异步的去执行需要执行的内容的, 不会影响主线程的流程, 往往需要让主线程指定后, 等...
分类:
编程语言 时间:
2015-03-19 23:49:28
阅读次数:
222
创建线程以及管理线程池基本理解参考原文链接:http://www.oschina.net/question/12_11255?sort=time一、创建一个简单的java线程在 Java 语言中,一个最简单的线程如下代码所示:Java代码Runnablerunnable=newRunnable(){...
分类:
编程语言 时间:
2015-02-11 15:54:14
阅读次数:
146
CountDownLatch,一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。CountDownLatch如其所写,是一个倒计数的锁存器,当计数减至0时触发特定的事件。利用这种特性,可以让主线程等待子线程的结束。主要方法public CountDownLatch...
分类:
编程语言 时间:
2015-02-03 19:08:05
阅读次数:
164
有时候我们会遇到这样的问题:做一个大的事情可以被分解为做一系列相似的小的事情,而小的事情无非就是参数上有可能不相同而已!
此时,如果不使用线程,我们势必会浪费非常多的时间来完成整个大的事情,而使用线程的话将会存在这样的问题:
主线程启动所有子线程并发执行后主线程就直接返回了,导致外部函数判读整个大的事情完成了,但是实际上并没有完成!
针对以上情况我想我会采用多线程方式执行同时解决主线...
分类:
编程语言 时间:
2014-06-27 10:23:41
阅读次数:
210