Java线程学习笔记(一)

本文介绍了一个名为Counter的倒计时类,该类实现了Runnable接口并可通过Thread或ExecutorService进行调用。每个实例拥有唯一的线程ID,并能够显示当前倒计数值。

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

入门,定义一个做倒计时的类,Counter,该类实现了Runnable接口,

 

package com.woxiaoe.study.thread;
/**
 * 倒计时类
 * @author 小e
 *
 * 2010-4-19 下午09:12:02
 */
public class Counter implements Runnable {
	
	private int countNum;
	private static int taskCount = 0;//线程id
	private final int taskId = taskCount++;
	
	public Counter(int countNum) {
		this.countNum = countNum;
	}
	
	public String show(){
		return "Id[" + taskId + "] countNum:" + countNum + "  ";
	}
	@Override
	public void run() {
		while(countNum-- > 0){
			System.out.print(show());
			Thread.yield();
		}
	}
	

}

 测试代码,通过Thread来调用

 

package com.woxiaoe.study.thread;

import java.util.Random;

import junit.framework.TestCase;

public class TestCounter extends TestCase {
	public void testThread(){
		for(int i = 0; i < 5 ; i++){
			new Thread(new Counter(10)).start();
		}
	}

}

通过ExecutorService调用

public void testExecutor(){
		ExecutorService exec = Executors.newCachedThreadPool();
		for(int i = 0; i < 10 ; i++){
			exec.execute(new Counter(10));
		}
		exec.shutdown();
	}
 

 Output:

Id[1] countNum:9  Id[0] countNum:9  Id[3] countNum:9  Id[2] countNum:9  Id[0] countNum:8  Id[1] countNum:8  Id[3] countNum:8  Id[1] countNum:7  Id[4] countNum:9  Id[1] countNum:6  Id[3] countNum:7  Id[3] countNum:6  Id[1] countNum:5  Id[3] countNum:5  Id[1] countNum:4  Id[3] countNum:4  Id[1] countNum:3  Id[3] countNum:3  Id[1] countNum:2  Id[3] countNum:2  Id[1] countNum:1  Id[3] countNum:1  Id[1] countNum:0  Id[3] countNum:0  Id[2] countNum:8  Id[2] countNum:7  Id[2] countNum:6  Id[2] countNum:5  Id[2] countNum:4  Id[2] countNum:3  Id[2] countNum:2  Id[2] countNum:1  Id[2] countNum:0  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值