java 之 线程池学习

原创 2012年03月21日 15:09:39
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;

public class ThreadPoolTest {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
//		ExecutorService threadPool = Executors.newFixedThreadPool(3);
//		ExecutorService threadPool = Executors.newCachedThreadPool();//自动分配线程,线程数是动态的
		ExecutorService threadPool = Executors.newSingleThreadExecutor();//保证有一个线程,死了就马上恢复一个,找一个替补
		
		/*for (int i = 0; i < 10; i++) {
			final int task = i;
			threadPool.execute(new Runnable() {

				@Override
				public void run() {
					for (int j = 0; j < 10; j++) {
						try {
							Thread.sleep(50);
						} catch (InterruptedException e) {
							e.printStackTrace();
						}
						System.out.println(Thread.currentThread().getName()
								+ " is looping of " + j + " for task of "
								+ task);
					}
				}

			});
		}*/
		
//		threadPool.shutdownNow();//立即杀死,不顾其他的任务(0,1,2)
	//	threadPool.shutdown();//10个任务都执行了
		
		//定时器
		/*Executors.newScheduledThreadPool(3).schedule(new Runnable() {
			
			@Override
			public void run() {
				System.out.println("bomb!!!!!!!!xxxxxxxxxxxxxxxxxxxxxxxxxxx");
			}
		}, 10, TimeUnit.SECONDS);*/
		
		//每隔一定的频率时间循环执行
		Executors.newScheduledThreadPool(3).scheduleAtFixedRate(new Runnable() {
			
			@Override
			public void run() {
				System.out.println("bomb!!!!!!!!xxxxxxxxxxxxxxxxxxxxxxxxxxx");
			}
		}, 
		10, //initialDelay
		3,//period
		TimeUnit.SECONDS);
	}
	
	/*
	 * 更精细的设置可以使用开源框架 Quartz 进行作业调度
	 */
}

Java线程池技术之二 Java自带线程池实现

一,介绍   类视图如下:     自Java 1.5后,Java对线程相关的库做了很大的拓展,线程池就是其中之一。Java线程的新特性多数在java.util.concurrent,其包...
  • IterZebra
  • IterZebra
  • 2011年09月18日 21:45
  • 6509

java线程池介绍及简单使用举例

简述了创建线程池的几种方法以及类的关系,并举例介绍了两种线程池的创建方法及使用场景...
  • u014665856
  • u014665856
  • 2017年05月07日 21:14
  • 1009

java线程池学习(二) —— 实现一个简单的线程池

在上一篇文章中《java线程池学习(一) —— BlockingQueue》,我们简单探讨了一个BlockingQueue的概念。 那么在这边文章,我们要利用BlockingQueue来自己实现一个简...
  • Great_Smile
  • Great_Smile
  • 2015年10月03日 17:01
  • 2799

java线程池学习(三) —— ThreadPoolExecutor

上一篇文章中我们自己写了一个简单的线程池。 这一篇文章我们来了解一下java为我们提供的线程池实现—— ExecutorService接口 它位于jdk的java.util.concurrent包下...
  • Great_Smile
  • Great_Smile
  • 2015年10月03日 19:34
  • 1344

Java 线程池 ThreadPoolExecutor 源码分析

线程池能够对线程进行有效的管理, 复用和数量上限的限制, 所以比起原始的 new Thread().start() 这种创建并启动线程的方式, 线程池的效率和性能都更好. Java 中的线程池是用 ...
  • cleverGump
  • cleverGump
  • 2016年02月18日 18:51
  • 4622

Java手写线程池实现

手写线程池实现1.线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线程池线程都是后台线程。2.线程池简易架构3.简易线程池代码(自行优化)import jav...
  • yingfengjia520
  • yingfengjia520
  • 2017年10月14日 15:50
  • 164

java多线程设计模式Worker Thread(线程池)

想象一个场景,一个工厂在生产玩具,在一个车间里,有几个工人,每次生产部件准备好车间外的人就将部件放到车间的一个桌子上,工人每次做完一个玩具就从桌子上取部件。在这里,注意到,部件并不是直接交给工人的,另...
  • sinat_23092639
  • sinat_23092639
  • 2016年11月13日 13:32
  • 2172

Java学习之线程池

1、使用线程池的目的: 程序启动一个新线程成本是比较高的,因为它要设计到要与操作系统进行交互,而使用线程池可以很好的提高性能,尤其是当程序中要创建大量生存期很短的线程是,更应该考虑使用线程池 2、...
  • RookieThree
  • RookieThree
  • 2017年05月25日 10:37
  • 79

Java 使用线程池执行大数据量统计任务

最近需要对每周生成的日志表进行处理,并且输出结果到另一张表。日志表本身至少500万条记录。因此打算用多线程来处理数据。在使用线程池时,几个注意点: 1、设置独立的线程名规则,区分自动生成的线程名; 2...
  • difffate
  • difffate
  • 2017年08月13日 20:51
  • 630

java并发编程&线程池原理剖析&锁的深度化完整版本视频教程

蚂蚁课堂第二期 java并发编程&线程池原理剖析&锁的深度化完整版本视频教程 已经公开! 蚂蚁课堂在线观看:http://www.itmayiedu.com/front/couinfo/80/0 ...
  • yushengjun_644
  • yushengjun_644
  • 2017年12月11日 00:55
  • 823
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java 之 线程池学习
举报原因:
原因补充:

(最多只允许输入30个字)