今天忽然想到 线程的 问题 然后就写了个测试例子 !
参考:http://zhidao.baidu.com/link?url=dYpdWOn6FBZNjUkIFbWESIlw7bgHaQyD4ltQGSi9RlPUsZiOIWFw0799J56cthEgGo1Hfg6IdbUgXq38Nh9-DK
通过调用Thread类的start()方法来启动一个线程, 这时此线程是处于就绪状态, 并没有运行。 然后通过此Thread类调用方法run()来完成其运行操作的, 这里方法run()称为线程体, 它包含了要执行的这个线程的内容, Run方法运行结束, 此线程终止, 而CPU再运行其它线程, 而如果直接用Run方法, 这只是调用一个方法而已, 程序中依然只有主线程--这一个线程, 其程序执行路径还是只有一条, 这样就没有达到写线程的目的。 记住:线程就是为了更好地利用CPU, 提高程序运行速率的!
上面是 百度知道里面的原话!
下面是我写的例子:
/**
* Created by hy.ao on 14-5-13.
*/
public class ThreadTest extends Thread {
@Override
public void run() {
for (int i = 0; i < 1000000; ) {
i++;
}
System.out.println("thread is ok");
}
@Override
public synchronized void start() {
super.start();
}
}
import junit.framework.TestCase;
/**
* Created by hy.ao on 14-5-13.
*/
public class Test extends TestCase {
public static void main(String[] args) {
test1();
test2();
}
public static void test1() {
ThreadTest threadTest = new ThreadTest();
threadTest.start();
System.out.println(111212);
}
public static void test2() {
ThreadTest threadTest = new ThreadTest();
threadTest.run();
System.out.println(111212);
}
}
运行 test1() 的结果 , start 是2个线程 所以 应该先打印 11212
111212
thread is ok
运行test2() 这个是同一个主线程里面 所以应该 是 后打印 11212
thread is ok
111212
所以很明显可以看出结论了!
start() 是启动了2个线程!而调run 方法 只是调方法 还是主线程!