class MyThread extends Thread { public static void main(String args[]) { MyThread t = new MyThread(); MyThread s = new MyThread(); t.start(); System.out.print("one."); s.start(); System.out.print("two."); } public void run() { System.out.print("Thread"); } }
结果是什么?为什么?
结果是什么?为什么?
当然也可能t还没有执行run,主线程main已经调用了s.start() ,所以结果就不为一了。run里面可以这样写,你就比较清楚了。(多运行测试一下)
public void run() { System.out.println(Array.currentThread().getName()+"is the thread now"); }打印出:one.
Thread-0is the thread now
two.
Thread-1is the thread now或者:one.
two.
Thread-0is the thread now
Thread-1is the thread now
在此程序中,有3个线程:main,Thread-0,Thread-1。
首先执行线程main,然后分别开启了线程Thread-0和Thread-1。如果一个线程时间片到期,就会执行另一个线程,如此反复交换。
class MyThread extends Thread { public static void main(String args[]) { MyThread t = new MyThread(); MyThread s = new MyThread(); t.start();
//加上此句,运行结果又有不同。try{
sleep(10); // main线程睡眠10毫秒
}catch(Exception e){
e.printStackTrace();
}System.out.print("one."); s.start(); System.out.print("two."); } public void run() { System.out.print("Thread"); }