runnable 与thread的区别
时间: 2023-06-09 21:02:14 浏览: 55
Runnable 和 Thread 都与多线程编程相关。
Runnable 是一个接口,定义了一个单一的方法 run()。我们可以创建一个被 Runnable 实现的类的对象,然后将其传递给 Thread 的构造函数中。这个线程实例化后,通过启动它来执行该线程的 run() 方法。实际上,线程执行的步骤分为两个部分:第一个部分是分配新的线程资源,第二个部分是调用线程的 run() 方法。通过将可运行对象传递给线程,可以分离线程的创建和运行。
Thread 类继承 Runnable 接口,因此 Thread 也实现了 run() 方法。除此之外,Thread 能够在启动线程时更加灵活,还提供了其他有用的方法,比如 stop(), suspend() 和 resume() 等。但是,在 Java 5 之后,这些方法被废弃,建议使用更加安全可靠的线程操作方法。
相关问题
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接口实现。
Thread与Runnable的区别
Thread和Runnable都是用于多线程编程的接口,但它们存在一些区别:
1. Thread是一个类,而Runnable是一个接口。Thread可以直接继承,而Runnable必须通过实现接口来使用。
2. Thread类已经实现了Runnable接口,因此可以直接重写Thread的run()方法,而实现Runnable接口需要手动编写run()方法。
3. 一个类只能继承一个父类,但是可以实现多个接口。因此,使用Runnable接口能够避免单继承的限制。
4. 使用Runnable接口可以使代码更加模块化,让职责更加清晰。一个类可以实现多个Runnable接口,每个接口实现一个线程任务,这样代码更加易读、易维护。
总之,Thread类是实现多线程的一种方式,而Runnable接口则是扩展Thread类的一种方式,使用哪种方式取决于具体的需求。