关键区别–可运行与线程
正在执行的程序称为进程。该流程可分为多个子流程。例如,microsoftword就是一个进程。同时,它检查拼写错误和语法。这是一个子流程。这些子流程称为线程。多线程处理是同时执行多个线程的过程。线程化应用程序可以使用不同的编程语言构建。Runnable和Thread与Java编程相关联。Java中有两种方法通过实现可运行接口或扩展thread类来创建线程。在实现Runnable时,许多线程可以共享同一个线程对象,而在扩展thread类时,每个线程都有一个与之关联的唯一对象。这就是Runnable和Thread之间的关键区别。
目录
1. 概述和主要区别
2. 什么是可运行的
3. 什么是线
4. Runnable和Thread之间的相似性
5. 并排比较-表格形式的可运行与线程
6. 摘要
什么是可运行(runnable)?
一根线穿过一些状态。“新”是线程生命周期的开始。在start()方法调用新线程后,它将变为可运行的。如果线程调度程序选择了正在运行的线程,则该线程将选择该状态。如果该线程正在等待另一个线程执行任务,则该线程正在等待该状态。线程完成工作后,将进入终止状态。
可以使用可运行的接口实现可运行线程。参考以下程序。
根据上述程序,Runnable Demo类实现了Runnable接口。run()方法位于实现可运行接口的类中。它是线程的入口点。逻辑在run()方法中。在主程序中,线程是通过定义一个从可运行的Demo类实例化的对象来创建的。是t1。start()方法是使用t1调用的。
参考以下程序。
根据上面的例子,类Runnable Demo实现了Runnable接口。使用线程执行的逻辑是用run()方法编写的。在主程序中,线程是通过定义一个从可运行的Demo类实例化的对象来创建的。是t1。然后,使用t1调用start()方法。
什么是线(thread)?
另一种创建线程的方法是扩展thread类。它包括三个步骤。首先是将类声明为Thread类的扩展。然后,应该编写run()方法。它具有线程应该执行的步骤序列。最后,创建thread对象,并调用start()方法来启动线程的执行。参考以下程序。
根据上面的程序,MyThread类扩展了Thread类。它重写run方法。run()方法包含线程要执行的逻辑。它是线程的入口点。然后创建线程对象。它是线程1。线程是使用start()方法启动的。它将执行对run()方法的调用。
下面是扩展Thread类的两个类的示例程序。
根据上面的程序,A类和B类都在扩展线程类。这两个类都有run()方法的实现。主线程执行main()方法。在主线程死之前,它创建并启动thread1和thread2。当主线程到达main方法的末尾时,三个线程正在并行运行。线程没有给出输出的具体顺序。一旦线程启动,就很难决定它们将执行的顺序。它们独立运行。
可运行(runnable)和线(thread)的共同点
- 它们都是用Java创建线程的。
可运行(runnable)和线(thread)的区别
可运行vs线程 | |
Runnable是Java中的一个接口,用于创建一个允许多个线程共享同一个线程对象的线程。 | thread是Java中的一个类,用于创建一个线程,其中每个线程都有一个与之关联的唯一对象。 |
记忆 | |
在Runnable中,多个线程共享同一个对象,因此需要较少的内存。 | 在线程类中,每个线程创建一个唯一的对象,因此需要更多内存。 |
扩展能力 | |
在实现可运行接口之后,它可以扩展一个类。 | Java不支持多个继承。在扩展Thread类之后,它不能扩展任何其他类。 |
代码可维护性 | |
可运行接口使代码更易于维护。 | 在线程类中,维护非常耗时。 |
总结 - 可运行(runnable) vs. 线(thread)
一个流程被分成多个子流程来同时执行多个任务。这些子流程称为线程。实例化线程可以通过实现可运行接口或扩展thread类来完成。它是一个面向对象的程序设计,但不是一个很容易扩展的类。在实现Runnable时,许多线程可以共享同一个线程对象,而在扩展thread类时,每个线程都有一个与之关联的唯一对象。这就是Runnable和Thread之间的区别。在线程类中创建多个对象会消耗更多内存。
下载runnable vs thread的pdf
你可以下载这篇文章的PDF版本,并按照引文说明离线使用。请在这里下载PDF版本的Runnable和Thread的区别