博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
线程和线程池的使用
阅读量:6699 次
发布时间:2019-06-25

本文共 1400 字,大约阅读时间需要 4 分钟。

参考:http://www.cnblogs.com/dolphin0520/p/3932921.html

 

1、线程:循环新建10个线程

 

注意:final定义的变量才能在run()方法里使用 

package com.test;public class TestThread {	public static void main(String[] args) {		for(int i =0; i <9; i++){			//final变量才能传到run()方法里			final int task = i;				new Thread(new Runnable(){					@Override				public synchronized void run() {					System.out.println("task:" + task);				}							}).start();		}			}	}

 

 

 

 

2、线程池

不提倡直接使用ThreadPoolExecutor,Java通过Executors提供四种线程池,分别为:

(1)newCachedThreadPool

  创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。

(2)newFixedThreadPool

  创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。

(3)newScheduledThreadPool

  创建一个定长线程池,支持定时及周期性任务执行。

(4)newSingleThreadExecutor

  创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行。

 

如下是newFixedThreadPool的使用实例:

package com.test;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;public class TestExcutor {	public static void main(String[] args) {		//线程池接口:ExecutorService		ExecutorService fixThreadPool = Executors.newFixedThreadPool(5);		for(int i=1; i<=5; i++){			final int task =i;			fixThreadPool.execute(new Runnable(){				@Override				public synchronized void run() {					for(int j=1; j<=3;j++){						System.out.println(Thread.currentThread().getName() + "  " +"task:" + task + "   times:" +j);					}				}							});		}		fixThreadPool.shutdown();			}	}

  

 

转载于:https://www.cnblogs.com/Donnnnnn/p/7676699.html

你可能感兴趣的文章
利用HTML中的XML数据岛记录浏览
查看>>
resource fork, Finder information, or similar detr
查看>>
unicode字符、python乱码问题
查看>>
持久代是方法区还是堆中的?
查看>>
北邮-上机-提交错误解决及一些经验
查看>>
Android的按钮单击事件及监听器的实现方式
查看>>
在Spring中使用JTA事务管理
查看>>
【运动快乐】享受赤脚慢跑 收获健康快乐
查看>>
datetime-时间日期模块
查看>>
Vmware vSphere 十个疑难问题解决方法
查看>>
实战演示 bacula 软件备份功能
查看>>
学习具体计划书
查看>>
es Update API
查看>>
MR作业的提交监控、输入输出控制及特性使用
查看>>
Cisco堆叠配置步骤+链路聚合实例
查看>>
Docker storage driver 选择
查看>>
如果在docker中部署tomcat,并且部署java应用程序
查看>>
高并发系统之降级特技
查看>>
我的友情链接
查看>>
我的友情链接
查看>>