定长线程池Demo

 1 import java.util.concurrent.ExecutorService;
 2 import java.util.concurrent.Executors;
 3
 4 /**
 5  * Description:
 6  *
 7  * @author baozikengutou
 8  */
 9 public class Test2 {
10
11     public static void main(String[] args) {
12
13         // 创建固定长度线程池
14         ExecutorService fixedThreadPool = Executors.newFixedThreadPool(4);
15         for (int i = 1; i < 41; i++) {
16             final int index = i;
17             fixedThreadPool.execute(new Runnable() {
18
19                 @Override
20                 public void run() {
21                     try {
22                         System.out.println("================>线程:" + index + "\n");
23                         Thread.sleep(1000 * 3);
24                     } catch (InterruptedException e) {
25                         e.printStackTrace();
26                     }
27                 }
28             });
29         }
30     }
31 }

输出结果:

================>线程:1

================>线程:4

================>线程:3

================>线程:2

================>线程:5

================>线程:8

================>线程:7

================>线程:6

================>线程:9

================>线程:10

================>线程:11

================>线程:12

================>线程:13

================>线程:15

================>线程:14

================>线程:16

================>线程:17

================>线程:19

================>线程:18

================>线程:20

================>线程:21

================>线程:23

================>线程:24

================>线程:22

...

时间: 2024-11-09 03:23:04

定长线程池Demo的相关文章

线程池2_定长线程池

package com.chauvet.utils.threadPool; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; /*** * * 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待. * * 定长线程池的大小最好根据系统资源进行设置. * 如:Runtime.getRuntime().availableProcessors() (java虚拟机可用的

java线程池之newFixedThreadPool定长线程池

newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待. 线程池的作用: 线程池作用就是限制系统中执行线程的数量.     根 据系统的环境情况,可以自动或手动设置线程数量,达到运行的最佳效果:少了浪费了系统资源,多了造成系统拥挤效率不高.用线程池控制线程数量,其他线程排 队等候.一个任务执行完毕,再从队列的中取最前面的任务开始执行.若队列中没有等待进程,线程池的这一资源处于等待.当一个新任务需要运行时,如果线程池 中有等待的工作线程,就可以开始

内存池--定长内存池

简介 STL的 __pool_alloc, __mt_alloc,boost的pool系列, ace的ACE_Cached_Allocator均为定长内存池. 说明 内存池,根据存储的元素的长度是否可变,分为变长,与定长两种内存池. 从逻辑上来讲,定长内存池只需存储相同大小的元素,因此无须花费额外的空间(数据结构)来存储元素长度的信息. 以上几种定长内存池都可以较好的处理定长内存频繁分配的问题. STL--pool_alloc pool_alloc,原理是挂了16个链表(_S_free_list

定长内存池之BOOST::pool

内存池可有效降低动态申请内存的次数,减少与内核态的交互,提升系统性能,减少内存碎片,增加内存空间使用率,避免内存泄漏的可能性,这么多的优点,没有理由不在系统中使用该技术. 内存池分类: 1.              不定长内存池.典型的实现有apr_pool.obstack.优点是不需要为不同的数据类型创建不同的内存池,缺点是造成分配出的内存不能回收到池中.这是由于这种方案以session为粒度,以业务处理的层次性为设计基础. 2.             定长内存池.典型的实现有LOKI.B

java io学习 线程池

Java提供的原生线程池技术处理原理很清晰,故只要使用自己的原生线程池技术一般都能满足项目的需求.java提供了很好的线程池实现,比我们自己的实现要更加健壮以及高效,同时功能也更加强大,不建议自己编写.另外有同学可能用过spring的线程池,那么spring线程池和jdk原生线程池有啥区别吗?我们查看源码和官方api可以知道SpringFrameWork 的 ThreadPoolTaskExecutor 是辅助 JDK 的 ThreadPoolExecutor 的工具类,它将属性通过 JavaB

java多线程(三)-Executors实现的几种线程池以及Callable

从java5开始,类库中引入了很多新的管理调度线程的API,最常用的就是Executor(执行器)框架.Executor帮助程序员管理Thread对象,简化了并发编程,它其实就是在 提供了一个中间层,方便程序员管理异步任务的执行,而又不用显式的管理线程的生命周期. Executor采用了线程池实现,也更节约开销,因为是我们启动新线程的首选方法. 示例代码:src/thread_runnable/CachedThreadPool.java 1 public class CachedThreadPo

Java-----关于线程池的使用

关于线程的相关概念不在此阐述,请百度或谷歌之 对于学习线程来说,我认为从代码开始学习比较好,前提是有一定的技术的积累,否则请关闭不用再看了~ 线程池四种实现方式. ①可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程 package thread; import java.util.concurrent.Executor; import java.util.concurrent.ExecutorService; import java.util.concurre

并发编程(二):线程池

相比于线程池,我们可能接触new Thread更多一点,既然有了new Thread我们为什么还要使用线程池呢? new Thread的弊端 a.每次new Thread新建对象,性能差 b.线程缺乏统一管理,可能无限制的新建线程,相互竞争,有可能占用过多系统资源导致死机或者OOM(OutOfMemory) c.缺少更多功能,如更多执行.定期执行.线程中断 线程池的优势 a.重用存在的线程,减少对象创建.消亡的开销,性能好 b.可有效控制最大并发线程数,提高系统资源利用率,同时可以避免过多资源竞

Java四种线程池newCachedThreadPool,newFixedThreadPool,newScheduledThreadPool,newSingleThreadExecutor

介绍new Thread的弊端及Java四种线程池的使用,对Android同样适用.本文是基础篇,后面会分享下线程池一些高级功能. 1.new Thread的弊端 执行一个异步任务你还只是如下new Thread吗? Java new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub } }).start(); 1 2 3 4 5 6 7 new Thread(new