(1)创建一个calculator 类,并实现Runnable接口,并重写run()函数 (2)直接继承Thread 类,覆盖run()方法 选任意以上一个方法,创建该对象,执行start()或 run()方法
下面要讲一下 run()和start()的区别 calculator类 package com.gqb.thread;
public class Calculater implements Runnable { private int number;
public Calculater(int number) {
super();
this.number = number;
}
@Override
public void run() {
// TODO Auto-generated method stub
for (int i = 0; i < 5; i++) {
System.out.printf("%s: %d * %d=%d\n",Thread.currentThread().getName(),number,i,i*number);
if (i==9) {
System.out.println(System.currentTimeMillis());
}
}
}
}
test类的程序 package com.gqb.thread;
public class test { public static void main(String[] args) { long daString=System.currentTimeMillis(); for (int i = 0; i < 10; i++) { Calculater calculater=new Calculater(i); Thread thread=new Thread(calculater); thread.run(); }
}
}
当thread执行的是thread.start()方法是 console的运行结果是这样的
所以对于实现了Runnable接口的来说,创建Threa对象不会创建一个新的执行线程;同样调用它的run()方法也不会创建一个新的执行线程。只有当调用它的start()线程时才会创建一个新的执行线程