`
Tristan_S
  • 浏览: 378623 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java 子线程

 
阅读更多
java 主线程调用子线程后 可以用join的方式等待子线程返回, 再继续。
也可以用CompletionService 的take().get() 方法得到返回结果后再继续。

		ExecutorService es = Executors.newFixedThreadPool(10);
		CompletionService<List<StatisticErrorBean>> cs = new ExecutorCompletionService<List<StatisticErrorBean>>(
				es);

		for (int i = 0; i < urlFolderList.size(); i++) {
			cs.submit(new ConsumerErrorTask(urlFolderList.get(i).getUrl(), urlFolderList.get(i).getFolder(), reportMinus1, reportAdd1, reportS, this));
		}
		
		for (int i = 0; i < urlFolderList.size(); i++) {
			List<StatisticErrorBean> list = cs.take().get();
			if(list == null){
				logger.debug("list is null");
				continue;
			}
			combineList(resultList, list);
		}
		es.shutdown();



如果不需要等待子线程的结果的话,main线程可以直接结束, 子线程还会继续运行。
如果需要设置当main线程结束时, 子线程也停止。 可以将子线程设置成守护线程daemon。

public class Test extends Thread {
	@Override
	public void run() {
		// TODO Auto-generated method stub
		while(true){
			try {
				Thread.sleep(1000);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			System.out.println("test");
		}
	}

	public static void main(String[] args) throws InterruptedException {
		Test test=new Test();
		//test.setDaemon(true);//Of course.if set daemon thread. the child thread will exit
		test.start();
		Thread.sleep(3000);
		System.out.println("return");
		return;
	}
}


分享到:
评论

相关推荐

    java 子线程通过观察者模式通知主线程

    子线程与主线程之间的通信方式有很多种,如使用共享变量、wait/notify机制、Future和Callable接口等。而观察者模式(Observer Pattern)则是一种设计模式,它允许一个对象的状态变化自动通知其他依赖该对象的对象。...

    子线程更新主线程数据

    在多线程编程中,"子线程更新主线程数据"是一个常见的需求,尤其是在UI界面交互和后台处理相结合的应用中。主线程通常负责用户界面的显示与交互,而子线程则用于执行耗时的任务,避免阻塞主线程,提供良好的用户体验...

    子线程任务发生异常,主线程事务如何回滚

    子线程任务发生异常,主线程事务如何回滚? 本文将详细探讨当子线程任务发生异常时,如何让主线程捕获到该异常并进行事务的回滚。下面将从多线程编程的基础知识、线程池的使用、异常捕获三个方面进行阐述。 一、多...

    Android两个子线程之间的通信

    本文将深入探讨如何在Android环境中实现两个子线程之间的通信。 首先,理解Android线程模型至关重要。主线程,也称为UI线程,负责处理用户界面的更新和事件响应。为了不阻塞主线程,我们通常会在子线程中执行耗时...

    子线程操作主线程的示例

    本示例将深入探讨如何在Java或C#等支持多线程的编程语言中,安全地从子线程操作主线程。 首先,我们需要理解线程同步的概念。在多线程环境中,为了防止数据竞争和确保线程安全,我们需要使用同步机制,如锁、信号量...

    安卓UI线程和子线程通讯更新UI实例

    在Android应用开发中,UI线程(也称为主线程)负责处理用户交互和绘制界面,而子线程通常用于执行耗时操作,如网络请求、数据处理等。由于Android系统的安全机制,直接在子线程中修改UI是不允许的,因此我们需要通过...

    Java主线程等待子线程执行完毕

    在所有子线程启动后,我们使用 runningThreadNum.await() 等待所有子线程执行完毕。当所有子线程执行完毕后,计数器将减到零,于是 await 方法将返回,我们可以继续执行主线程的剩余动作。 使用 CountDownLatch 类...

    子线程控制ProgressDialog的可见性

    主线程主要负责处理用户界面和事件,而子线程通常用于执行耗时的操作,如网络请求或数据库操作。由于Android的UI操作必须在主线程中进行,因此在子线程中直接修改ProgressDialog的状态会导致应用崩溃或出现未定义的...

    子线程和主线程5种交互方式 Demo

    主线程,也称为UI线程,负责处理用户界面的更新和事件响应,而子线程通常用于执行耗时操作,如网络请求、数据处理等,以避免阻塞主线程导致应用无响应。以下是对标题和描述中提到的五种子线程与主线程交互方式的详细...

    基于Java子线程中的异常处理方法(通用)

    基于Java子线程中的异常处理方法(通用) 在Java子线程中处理异常是一个非常重要的主题,因为在并发情况下,捕获和处理异常变得更加复杂。本文将探讨如何在父线程中捕获来自子线程的异常,并提供三种常用方法来解决这...

    Java多线程--等待所有子线程执行完的五种方法.docx

    在Java多线程编程中,有时我们需要确保所有子线程执行完毕后再进行后续操作,例如在并发测试、数据聚合或资源清理等场景。本篇文章将详细介绍五种在Java中等待所有子线程执行完的方法。 ### 方法一:使用`sleep`...

    Java多线程--让主线程等待所有子线程执行完毕

    ### Java多线程--让主线程等待所有子线程执行完毕 #### 核心知识点解析 在Java多线程环境中,让主线程等待所有子线程执行完毕是一个常见的需求,尤其是在处理大量数据或进行高性能计算时。这不仅有助于正确测量...

    深入理解JAVA多线程之线程间的通信方式

    在Java多线程编程中,线程间的通信是至关重要的,因为它确保了多个并发执行的任务能够协调工作,避免数据不一致性和死锁等问题。本文将深入探讨两种主要的线程间通信方式:同步机制和基于轮询的方式。 1. 同步机制...

    子线程循环10次,接着主线程循环100,接着又回到子线程循环10次,接着再回到主线程又循环100,如此循环50次,请写出程序。

    主线程通常负责程序的主要逻辑,而子线程则用来执行额外的任务,不阻塞主线程。 在Python中,我们可以使用`threading`模块来创建和管理线程。下面是一个简化的示例代码,演示了如何实现标题中描述的交替执行过程: ...

    Java父线程(或是主线程)等待所有子线程退出的实例

    Java父线程等待所有子线程退出的实例 Java多线程编程中,父线程需要等待所有子线程退出是一种常见的场景。本文将通过一个实例,演示如何使用Java实现父线程等待所有子线程退出的机制。 首先,我们需要了解线程的...

    子线程和主线程通过handler 双向通信

    1. **主线程向子线程发送消息**:在主线程中创建一个HandlerThread,启动它,然后创建一个关联此HandlerThread Looper的Handler。主线程可以通过这个Handler发送Message到子线程。 2. **子线程向主线程发送消息**:...

    java实现打印素数/质数程序

    在Java中实现打印素数的程序是一项基础但重要的任务,这有助于理解和掌握循环、条件判断以及数学逻辑在编程中的应用。下面将详细解释如何通过Java编写一个打印素数的程序。 首先,我们需要理解基本的算法。一个常见...

    java多线程编程之捕获子线程异常示例

    当子线程抛出一个未捕获的Unchecked异常时,子线程会立即停止执行,但不会影响主线程或其他子线程。在这种情况下,如果不进行特殊处理,异常的信息可能会丢失,导致调试困难。 Java提供了一个机制来捕获并处理子...

    android 主线程给子线程发送消息

    本示例"android 主线程给子线程发送消息"是通过`Handler`机制来实现通信的,这是一个关键的多线程同步技术。 `Handler`是Android中用于在线程间传递消息和调度任务的工具,尤其是主线程与工作线程之间的通信。下面...

Global site tag (gtag.js) - Google Analytics