Thread.start()方法,其实是做了两件事: 第一,它启动了线程, 第二, 它调用了run()方法.
而 Thread.run()方法,实际上并没有启动线程, 而是主线程去调用该对象的run()方法,
所以说,如果仅仅是Thread.run(),那么主线程会先跳到run()方法里执行, 执行完了,会继续往下执行下面的代码...
不知道这样说,你能不能明白其中的区别
下面贴出来两段代码, 楼主如果还是不太理解的话,试着结合代码的运行结果来分析,应该可以理解到..
代码一: 测试Thread.run():
- class RunTest
- {
- public static void main(String[] args)
- {
- Test t = new Test();
- Thread t1 = new Thread(t);
- t1.run();
- //主线程也执行同样的循环,以示区别.
- for (int x=0; x<10 ;x++ )
- {
- System.out.println("-----main");
- }
- }
- }
- class Test implements Runnable
- {
- //覆写run()方法
- public void run()
- {
- for (int x=0; x<10 ;x++ )
- {
- System.out.println("Test-----");
- }
-
- }
- }
复制代码
运行结果:
代码二 : 测试Thread.start();
- class StartTest
- {
- public static void main(String[] args)
- {
- Test1 t = new Test1();
- Thread t1 = new Thread(t);
- t1.start();
- //主线程也执行同样的循环,以示区别.
- for (int x=0; x<10 ;x++ )
- {
- System.out.println("-----main");
- }
- }
- }
- class Test1 implements Runnable
- {
- //覆写run()方法
- public void run()
- {
- for (int x=0; x<10 ;x++ )
- {
- System.out.println("Test1-----");
- }
- }
- }
复制代码 运行结果:
提醒: 由于循环次数比较少,出现的结果可能与我这边的结果不太一样, 如果很多次都没有这样的交替出现的打印结果,楼主可以尝试修改代码中for循环的次数,修改大一点,效果会更加明显.
|