本帖最后由 绿影 于 2011-11-12 15:50 编辑
不知道大家注意到没有,多线程程序在编译时,程序中有几个线程就会生成几个.class文件,而且文件名都是带编号的。我发现这个说法并不完全正确。今天碰到一个程序执行时有多个线程但是并不是每个线程都会产生一个.class文件。代码如下:- import java.util.*;
- public class TraditionalTimer {
- @SuppressWarnings("deprecation")
- public static void main(String[] args) throws Exception {
- new Timer().schedule(
- new TimerTask(){
- public void run() {
- System.out.println(new Date().getSeconds());
- System.out.println("bombing0"+"|"+Thread.currentThread().getName());//添加打印当前线程名称
- //定时器中安装定时器
- new Timer().schedule(
- new TimerTask(){
- public void run(){
- System.out.println(new Date().getSeconds());
- System.out.println("bombing1"+"|"+Thread.currentThread().getName());
- }
- }
- ,3000
- // ,4000
- );
- }}
- ,1000//延迟多久后执行
- ,2000//以多久的频率反复循环执行,这个参数可以没有,那就仅执行一次
- );
- }
- }
复制代码 运行效果和产生的.class文件如下:
我很困惑这是为什么呢? |