您的位置:首页 > 其它

run()方法的一个疑问【转载】

2010-08-04 13:48 344 查看
线程类
public class MyRunnable implements Runnable{
        int i =0;
        public void run(){
                
                
                for(;i<30;i++){
                System.out.println("x========"+Thread.currentThread().getName());
                }
        }

}
调用线程类
public class TestThread {

        
        public static void main(String[] args) {
                Thread ttt = new Thread(new MyRunnable());
                ttt.run//注意这句
                Thread t =new Thread(new MyRunnable());
                t.start();//注意这句
                TestThread tt= new TestThread();
                
                for(int i =0;i<5;i++){
                        
                        
                     System.out.println("main====="+Thread.currentThread().getName());
                }

        }

}
运行结果:
x========main//调用 MyRunnable 的run()方法的运行结果
x========main
x========main
x========main
x========main
main=======main//主线程的运行结果
main=======main
main=======main
main=======main
main=======main
x========Thread-0//调用 MyRunnable 的start()方法的运行结果

x========Thread-0
x========Thread-0
x========Thread-0
x========Thread-0

这个有点不理解, 但也算是发现了点问题
希望大家看看

 

 

1你观察代码的效果,通过这个效果你可以推论出ttt.run()只不过执行了ttt的run()的代码,并没有从新开启一个新线程,他使用的仍然是main方法这个线程,虽然了运行了代码,并没有把线程的作用体现出来!
2:而线程调用start()方法首先是开启一个新的线程,在新的线程调用run()方法
不知道这样说你能否理解?

 

线程的启动是比较复杂的,需要为线程分配资源,它的START方法被调用时系统才会为线程分配资源。
你上面调用线程的run方法只能算普通的方法调用一样,得运行完run里面的代码整个程序才能往下进行,而如果调用start方法,线程和MAIN方法就会抢资源,打印的语句会交替出现,你把线程里的循环次数加到300,试一下依次调run、start和两次都调start方法时所出现的情况应该能看出点端倪~~~

 

 

不调用start方法就是不新建一个线程。run方法里只是你想在线程里做什么。

 

看你的代码:
1.Thread对象的run()方法在一种循环下,使线程一直运行,直到不满足条件为止,在你的main()里创建并运行了一些线程,调用Thread类的start()方法将为线程执行特殊的初始化的过程,来配置线程,然后由线程执行机制调用run()。如果你不调用start()线程就不会启动。
2. ttt.run();你的这句话只是把run()当做了一个普通的方法。
3.因为线程调度机制的行为是不确定的,所以每次运行该程序都会有不同的结果,你可以把你的循环次数增多些,然后看看执行的结果,你会发现main()的线程和Thread1是交替运行的。
4.还有就是尽管线程的调度顺序是不固定的,但是如果有很多线程被阻塞等待运行,调度程序将会让优先级高的线程先执行,而优先级低的线程执行的频率会低一些。

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐