从源码分析thread与runnable的关系
时间: 2023-06-05 18:08:23 浏览: 31
Thread和Runnable是Java中用于多线程编程的重要概念。Thread类是Java中表示线程的基本类,而Runnable接口则是一个遵循特定规则的轻量级线程。在Java中,通常使用实现Runnable接口来创建线程。具体来说,在创建线程时,我们通常会定义一个实现Runnable接口的类,并在该类中实现run()方法,然后再通过Thread类的构造方法创建一个新线程对象并将该Runnable作为参数传递给Thread对象,最终启动线程。总之,Thread和Runnable在Java的多线程编程中都有着非常重要的作用。
相关问题
thread与runnable的关系
Thread和Runnable是Java中用于实现多线程的两个接口。 Runnable定义了线程运行时要执行的代码,而Thread则负责管理线程的生命周期和执行Runnable中的代码。一个Thread可以有一个关联的Runnable对象,也可以没有。当Thread启动时,它会调用Runnable的run()方法来执行Thread所代表的任务。因此,Thread和Runnable是紧密相关的。
thread与runnable的区别
Thread和Runnable都是Java中用于实现多线程的概念,但是它们之间有一些区别。
1. Thread是Java中一个类,而Runnable是一个接口。Thread类实现了Runnable接口,所以我们可以使用Thread来实现Runnable。
2. Thread中的run()方法是线程的业务逻辑,直接通过Thread来调用run()方法会在当前线程中执行,而Runnable中只有一个run()方法,它是线程的执行体,必须通过Thread来启动。
3. Thread直接实现了Runnable接口的run()方法,而Runnable并没有start()、sleep()和join()等一些线程相关的方法。如果需要调用这些方法的话,可以通过Thread.currentThread()获取当前线程,并调用Thread类中的相应方法。
4. Thread对象只能启动一次,而Runnable对象可以被多个Thread共享。这是因为Thread在启动时会创建一个新的线程,而Runnable只是提供了一个线程执行的代码块,可以被多个Thread共享。
综上所述,Thread和Runnable都是用于实现多线程的概念,但Runnable更加灵活,可以被多个Thread共享,而Thread则提供了一些方便的线程相关的方法。所以,在实现多线程程序时,一般建议使用Runnable接口实现。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)