Java 并发:基本的线程机制

本文介绍了Java中线程的基本实现方法,包括创建最简单的线程、使用线程池提高资源利用率、通过SingleThreadExecutor排队执行线程以及利用FixedThreadPool执行固定数量的线程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文非真正原创,算是《Thinking in Java》的笔记吧。

一 实现一个最简单的线程

public class LiftOff implements Runnable{
	protected int countDown = 10;
	private static int taskCount = 0;
	private final int id = taskCount++;
	public LiftOff() {}
	
	public LiftOff(int countDown) {
		this.countDown = countDown;
	}
	
	public String status() {
		return "#" + id + "(" + (countDown > 0 ? countDown : "LiftOff!") + ")";
	}
	
	/* (non-Javadoc)
	 * @see java.lang.Runnable#run()
	 */
	@Override
	public void run() {
		while (countDown-- > 0) {
			System.out.println(status());
			Thread.yield(); // 告诉CPU可以进行线程切换。
		}
	}

}
然后,你以后再调用以下代码就可以开启一个新线程。下面代码调用t.start()函数之后就会执行 LiftOff类的run函数。

Thread t = new Thread(new LiftOff());
t.start();

二 线程池的使用

线程池可以提高资源的利用率,重复利用旧线程。还会从缓存中移除60秒未调用的线程。代码示例如下:

private static void testExecutorService() {
	ExecutorService executorService = Executors.newCachedThreadPool();
	for (int i = 0; i < 10; i++) {
		executorService.execute(new LiftOff());
	}
	executorService.shutdown();
}

三 排队线程:SingleThreadExecutor

SingleThreadExecutor可以被提交多个Thread,但是一次只能执行一个线程,且线程要按照先进先出的执行依次。代码示例如下:

private static void testSingleThreadExecutor() {
	ExecutorService executorService = Executors.newSingleThreadExecutor();
	for (int i = 0; i < 10; i++) {
		executorService.execute(new LiftOff());
	}
	executorService.shutdown();
}

四 还有FixedThreadPool

顾名思义,就是同时只能执行固定个数的线程。


參考:

http://www.cnblogs.com/adm1989/p/3293233.html

http://jiahua8859-163-com.iteye.com/blog/988193

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值