`

Java并发编程的执行器Executor

 
阅读更多

       Java SE5中java.util.concurrent包中的执行器将管理Thread.简要介绍一下:

1.CachedThreadPool:这是首选的,因为他会根据需要创建合理数量的线程:

ExecutorService exec=Executors.newCachedThreadPool();
		for(int i=0;i<10;i++){
		exec.execute(new MyRunnable());
		}
		exec.shutdown();
		
		System.out.println("main finished;");

 

//output:
runnable tag:  0
runnable tag:  0
runnable tag:  0
runnable tag:  1
runnable tag:  1
runnable tag:  0
runnable tag:  3
runnable tag:  1
runnable tag:  1
runnable tag:  1
runnable tag:  1
runnable tag:  1
runnable tag:  3
runnable tag:  3
runnable tag:  5
runnable tag:  5
runnable tag:  0
runnable tag:  0
runnable tag:  3
runnable tag:  3
runnable tag:  3
runnable tag:  1
runnable tag:  4
runnable tag:  4
runnable tag:  4
runnable tag:  4
runnable tag:  2
runnable tag:  4
runnable tag:  7
runnable tag:  7
runnable tag:  7
runnable tag:  7
runnable tag:  7
runnable tag:  7
runnable tag:  7
runnable tag:  7
runnable tag:  7
runnable tag:  7
runnable tag:  1
runnable tag:  1
runnable tag:  3
runnable tag:  3
runnable tag:  3
runnable tag:  6
runnable tag:  6
runnable tag:  0
runnable tag:  0
runnable tag:  5
runnable tag:  5
runnable tag:  5
runnable tag:  5
runnable tag:  0
runnable tag:  0
runnable tag:  6
runnable tag:  3
main finished;
runnable tag:  9
runnable tag:  9
runnable tag:  9
runnable tag:  9
runnable tag:  9
runnable tag:  9
runnable tag:  9
runnable tag:  9
runnable tag:  8
runnable tag:  8
runnable tag:  4
runnable tag:  4
runnable tag:  4
runnable tag:  4
runnable tag:  4
runnable tag:  2
runnable tag:  8
runnable tag:  8
runnable tag:  8
runnable tag:  8
runnable tag:  8
runnable tag:  8
runnable tag:  9
runnable tag:  9
runnable tag:  6
runnable tag:  5
runnable tag:  5
runnable tag:  5
runnable tag:  5
runnable tag:  8
runnable tag:  8
runnable tag:  6
runnable tag:  2
runnable tag:  2
runnable tag:  2
runnable tag:  2
runnable tag:  2
runnable tag:  2
runnable tag:  2
runnable tag:  2
runnable tag:  6
runnable tag:  6
runnable tag:  6
runnable tag:  6
runnable tag:  6

由结果可知,进程之间是抢占式的执行的。

 

2.FixedThreadPool:  这个可以控制线程池的线程数量,即指定线程数量;

		ExecutorService exec=Executors.newFixedThreadPool(5);
		for(int i=0;i<10;i++){
		exec.execute(new MyRunnable());
		}
		exec.shutdown();
		
		System.out.println("main finished;");

 运行结果和上一个类似。

 

3.SingleThreadExecutor  :  顾名思义是一个单线程执行器,对于连续运行的事物是很有用的。例如:监听进入的套接字连接任务或更新本地或者远程的日志。

		ExecutorService exec=Executors.newSingleThreadExecutor();
		for(int i=0;i<10;i++){
		exec.execute(new MyRunnable());
		}
		exec.shutdown();
		
		System.out.println("main finished;");

 运行结果是按照顺序的,一个一个的:

main finished;
runnable tag:  0
runnable tag:  0
runnable tag:  0
runnable tag:  0
runnable tag:  0
runnable tag:  0
runnable tag:  0
runnable tag:  0
runnable tag:  0
runnable tag:  0
runnable tag:  1
runnable tag:  1
runnable tag:  1
runnable tag:  1
runnable tag:  1
runnable tag:  1
runnable tag:  1
runnable tag:  1
runnable tag:  1
runnable tag:  1
runnable tag:  2
runnable tag:  2
runnable tag:  2
runnable tag:  2
runnable tag:  2
runnable tag:  2
runnable tag:  2
runnable tag:  2
runnable tag:  2
runnable tag:  2
runnable tag:  3
runnable tag:  3
runnable tag:  3
runnable tag:  3
runnable tag:  3
runnable tag:  3
runnable tag:  3
runnable tag:  3
runnable tag:  3
runnable tag:  3
runnable tag:  4
runnable tag:  4
runnable tag:  4
runnable tag:  4
runnable tag:  4
runnable tag:  4
runnable tag:  4
runnable tag:  4
runnable tag:  4
runnable tag:  4
runnable tag:  5
runnable tag:  5
runnable tag:  5
runnable tag:  5
runnable tag:  5
runnable tag:  5
runnable tag:  5
runnable tag:  5
runnable tag:  5
runnable tag:  5
runnable tag:  6
runnable tag:  6
runnable tag:  6
runnable tag:  6
runnable tag:  6
runnable tag:  6
runnable tag:  6
runnable tag:  6
runnable tag:  6
runnable tag:  6
runnable tag:  7
runnable tag:  7
runnable tag:  7
runnable tag:  7
runnable tag:  7
runnable tag:  7
runnable tag:  7
runnable tag:  7
runnable tag:  7
runnable tag:  7
runnable tag:  8
runnable tag:  8
runnable tag:  8
runnable tag:  8
runnable tag:  8
runnable tag:  8
runnable tag:  8
runnable tag:  8
runnable tag:  8
runnable tag:  8
runnable tag:  9
runnable tag:  9
runnable tag:  9
runnable tag:  9
runnable tag:  9
runnable tag:  9
runnable tag:  9
runnable tag:  9
runnable tag:  9
runnable tag:  9

 //*****************************************************************************************************************************

package com.wjy.multithread;

public class MyRunnable implements Runnable{
	private static int num=0;
	private final int tag=num++;
	@Override
	public void run() {
		// TODO Auto-generated method stub
		for(int i=0;i<10;i++){
			System.out.println("runnable tag:  "+tag);
		}
	}

}

 

分享到:
评论

相关推荐

    java并发编程实战源码,java并发编程实战pdf,Java

    《Java并发编程实战》是Java并发编程领域的一本经典著作,它深入浅出地介绍了如何在Java平台上进行高效的多线程编程。这本书的源码提供了丰富的示例,可以帮助读者更好地理解书中的理论知识并将其应用到实际项目中。...

    JAVA并发编程艺术pdf版

    《JAVA并发编程艺术》是Java开发者深入理解和掌握并发编程的一本重要著作,它涵盖了Java并发领域的核心概念和技术。这本书详细阐述了如何在多线程环境下有效地编写高效、可靠的代码,对于提升Java程序员的技能水平...

    Java并发编程利器:Executor框架深度解析与应用实践

    在现代Java应用开发中,多线程并发编程已成为提升程序性能的关键技术之一。Java通过引入Executor框架,为并发任务的执行提供了一种高效、灵活的管理机制。本文将深入探讨Executor框架的设计哲学、核心组件,并结合...

    Java并发编程实战

    4.2.1 Java监视器模式 4.2.2 示例:车辆追踪 4.3 线程安全性的委托 4.3.1 示例:基于委托的车辆追踪器 4.3.2 独立的状态变量 4.3.3 当委托失效时 4.3.4 发布底层的状态变量 4.3.5 示例:发布状态的车辆追踪...

    Java并发编程全景图.pdf

    Java并发编程是Java语言中最为复杂且重要的部分之一,它涉及了多线程编程、内存模型、同步机制等多个领域。为了深入理解Java并发编程,有必要了解其核心技术点和相关实现原理,以下将详细介绍文件中提及的关键知识点...

    Java 并发核心编程

    ### Java 并发核心编程知识点解析 #### 一、Java并发概述 自Java诞生之初,其设计者就赋予了该语言强大的并发处理能力。Java语言内置了对线程和锁的支持,这...理解和掌握这些概念和技术是成功进行并发编程的关键。

    Java并发编程面试题

    Java并发编程是指在Java程序中同时执行多个线程以提高程序的执行效率和响应速度的技术。并发编程可以带来许多优点,如提高程序的执行效率、改善用户体验等。但同时,Java并发编程也存在一些缺点,如线程安全问题、...

    Java 并发编程实战

    4.2.1 Java监视器模式 4.2.2 示例:车辆追踪 4.3 线程安全性的委托 4.3.1 示例:基于委托的车辆追踪器 4.3.2 独立的状态变量 4.3.3 当委托失效时 4.3.4 发布底层的状态变量 4.3.5 示例:发布状态的车辆追踪...

    java并发编程从入门到精通

    上述提及的知识点,如线程的基本概念、并发集合、锁机制、线程池的使用、线程同步与通信的模式等,都是《java并发编程从入门到精通》这本书的前三章可能会涉及的内容。尽管这里只能提供试读版的内容,但通过阅读和...

    Java并发编程全套源码

    Java并发编程是Java开发中的重要领域,它涉及如何在多处理器或多核心环境下高效地执行程序。本套源码集合全面涵盖了Java并发编程的核心知识点,包括但不限于对象锁、Executors多任务线程框架以及线程池的实现。下面...

    java 并发编程2

    7. **线程池与Executor框架**:ExecutorService是Java并发编程的核心,它允许我们管理线程,控制并发级别,避免频繁创建和销毁线程的开销。ThreadPoolExecutor是ExecutorService的一个实现,可以根据需求配置线程池...

    java并发编程库

    Java并发编程库,特别是java.util.concurrent(简称J.U.C),是Java语言在多线程处理上的一大亮点。并发编程是一个复杂的话题,因为它涉及到许多高级概念,包括线程安全、死锁、性能优化和原子操作等。J.U.C正是为了...

    Java并发编程的艺术.zip

    《Java并发编程的艺术》这本书是Java开发者深入了解并发编程的重要参考资料。在Java开发中,尤其是在多核处理器和高并发场景下,理解和掌握并发编程是至关重要的。以下是对书中的主要知识点的详细阐述: 1. **Java...

    java虚拟机并发编程

    为了更好地理解Java并发编程的实际应用,我们可以考虑一个简单的例子——使用`Future`和`Callable`来实现异步任务的执行。假设有一个复杂的计算任务需要长时间执行,但主程序不能等待这个任务完成。此时,可以将计算...

    Java并发编程的艺术

    Java并发编程是现代软件开发不可或缺的一部分,它不仅可以提升程序的执行效率,还能改善用户体验。通过深入学习Java并发编程的相关知识和技术,开发者可以更好地利用多核处理器的优势,构建出高性能、健壮的应用程序...

    java并发编程实战源码,java并发编程实战pdf,Java源码.zip

    《Java并发编程实战》是Java开发者深入理解并发编程的一本经典著作。这本书深入浅出地讲解了Java平台上的并发和多线程编程,涵盖了从基本概念到高级技术的方方面面。以下将围绕这本书的源码、PDF及Java并发编程的...

    汪文君高并发编程实战视频资源下载.txt

    │ Java并发编程.png │ ppt+源码.rar │ 高并发编程第二阶段01讲、课程大纲及主要内容介绍.wmv │ 高并发编程第二阶段02讲、介绍四种Singleton方式的优缺点在多线程情况下.wmv │ 高并发编程第二阶段03讲、...

Global site tag (gtag.js) - Google Analytics