您的位置:首页 > 其它

Thread的run()方法与start()方法

2014-08-21 14:36 197 查看
今天看到一个面试题问到Thread的run()方法与start()方法的区别,当时一想多线程开发,这两个方法是经常遇到的,但是区别,还真没考虑过。从函数名可是感受到,start是启动,run是运行,就查阅一些资料,看看其区别在哪里。

实现并启动线程有两种方法

1、写一个类继承自Thread类,重写run方法。用start方法启动线程

2、写一个类实现Runnable接口,实现run方法。用new Thread(Runnable target).start()方法来启动

run()与start()

1.run()方法,用于封装线程运行的任务代码。直接用创建的线程对象调用,并没有产生新的线程,仅仅是当前正在运行的线程(如,主线程)在执行run方法。run()方法只是类的一个普通方法而已,如果直接调用Run方法,程序中依然只有主线程这一个线程,其程序执行路径还是只有一条,还是要顺序执行,还是要等待run方法体执行完毕后才可继续执行下面的代码,这样就没有达到写线程的目的。

2.start()方法,共有两个作用:

1)开启了当前线程,也就是说,当前程序又多了一条执行路径和当前线程(主线程)并发执行,而run()方法会被新开启的线程运行。

2)调用线程的run()方法。

用 start方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码。通过调用Thread类的 start()方法来启动一个线程,这时此线程处于就绪(可运行)状态,并没有运行,一旦得到cpu时间片,就开始执行run()方法,这里方法 run()称为线程体,它包含了要执行的这个线程的内容,Run方法运行结束,此线程随即终止。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: