Java中的多线程是使用彼此独立的虚拟处理实体执行复杂进程的行为。这些实体称为线程。Java中的线程是虚拟的,并与进程共享相同的内存位置。因为线程是虚拟的,所以它们展示了执行进程的更安全的方式。

什么是多任务以及多任务的类型?

多任务处理是一种通过同时执行多个任务来最小化执行时间和最大化CPU利用率的方法。您可以使用两种方法在Java中实现多任务处理,如下所述。

Multithreading-in-Java-Mutlitasking

Java中的多处理

Java中的多处理纯粹基于主机上可用的处理器数量。用户发起的每个进程都被发送到CPU(处理器)。它用与分配的进程相关的数据加载CPU上的寄存器。

要在Java中执行多处理,用户需要一个处理器。因此,当用户请求同时执行第二进程时,备用CPU核心被触发并执行该进程。

Java中的多线程

Java中的多线程是一种类似的多处理方法。然而,两者之间存在一些根本性的区别。多线程不是物理处理器,而是虚拟的和独立的线程。

它根据进程的复杂性为每个进程分配一个或多个线程。每个线程都是虚拟的,相互独立。这使得流程执行更加安全。如果有一两个线程在意外情况下终止,进程执行不会停止。

在本Java中的多线程教程的下一节中,您将了解Java中的线程。

什么是Java中的线程?

线程是整个进程中最小的部分。线程是进程中独立的、虚拟的和顺序的控制流。在进程执行中,它涉及一个线程集合,每个线程共享相同的内存。每个线程独立于另一个线程执行作业。

Multithreading-in-Java-what-is-a-thread.

有时,这些过程可能相互依赖,以获得一个完成该过程的中间结果。

在Java中的多线程教程的下一部分中,您将了解线程的生命周期。

Java中的一个线程

Java中每个线程的生命周期有五个不同的阶段。您将详细了解其中的每个阶段。生命周期的各个阶段如下所述。

  • New

  • Runnable

  • Running

  • Waiting

  • Dead

Multithreading-in-Java-Thread-lifecycle.

New

第一个阶段是“new”。这个阶段是它启动线程的地方。在此之后,每个线程都保持新状态,直到该线程被分配给新任务。

Runnable

下一阶段是可运行阶段。在这里,一个线程被分配给该任务,并设置自身以运行该任务。

Running

第三阶段是执行阶段。在这里,当控制进入线程时,线程被触发,线程执行一项任务并继续执行,直到它完成作业。

Waiting

有时,一个过程作为一个整体可能依赖于另一个过程。在这样的遭遇期间,线程可能会因为依赖于不同的进程而暂停以获得中间结果。这个阶段被称为等待阶段。

Dead

在Java中,使用多线程执行进程的最后阶段是线程终止。在终止进程之后,JVM自动声明该线程已死并终止该线程。此阶段称为死线阶段。

现在您已经了解了线程及其生命周期,接下来我们将继续学习并了解Java中的多线程。

Java中的多线程是什么?

到目前为止,您已经了解了进程、线程和线程的生命周期。您知道计算机通过线程执行任务。现在,您将学习Java中的多线程过程。

顾名思义,Java中的多线程通过同时运行一组线程来执行一个复杂的进程。每个线程都属于Java.lang.Thread类。线程类覆盖run()方法并执行该进程。

在下一部分中,您将了解Java中的多线程方法。

Java中的多线程方法

以下是Java中的多线程方法。

start()

Start方法启动线程的执行

currentThread()

currentThread方法返回对当前执行的线程对象的引用。

run()

Run方法触发线程的操作

isAlive()

调用isAlive方法来验证线程是活的还是死的

sleep()

sleep方法用于暂时挂起线程

yield()

yield方法用于将当前正在执行的线程发送到待机模式,并以更高的优先级运行不同的线程集

suspend()

Suspend方法用于立即挂起线程执行

resume()

resume方法仅用于恢复挂起线程的执行

interrupt()

Interrupt方法触发对当前执行的线程类的中断

destroy()

调用Destroy方法来销毁一组线程的执行

stop()

stop方法用于停止线程的执行

在介绍了Java中的多线程方法之后,您将完成一个基于Java中的多线程的示例。

Java中的多线程示例

下面是一个基于Java中使用runnable接口的多线程的示例。

### //Code
package multithreading;

class ThreadCount extends Thread{
ThreadCount(){
super("Overriding Thread Class");
System.out.println("New thread created" + this);
start();
}

public void run(){ //Run Method
    try{
        for (int i=0 ;i<10;i++){
System.out.println("New thread created" + this);
Thread.sleep(1500);
        }
    }
    catch(InterruptedException e){
System.out.println("Currently executing thread is interrupted");
}
System.out.println("Currently executing thread run is terminated" );
}
}

public class MultiThreading{
public static void main(String args[]){
ThreadCount C = new ThreadCount();
try{
while(C.isAlive()){
System.out.println("Main Method Thread will be alive, until it's Child Thread stays alive");
Thread.sleep(2500); //Sleep method
}
}
catch(InterruptedException e){
System.out.println("Main Method thread is interrupted");
}
System.out.println("Main Method's thread run is terminated" );
}
}

接下来,您将了解Java中多处理和多线程之间的区别。

Java中的多处理与多线程

下表解释了Java中多处理和多线程之间的基本区别

多处理

多线程

多处理需要多个物理处理器来执行复杂的进程。

Java中的多线程需要虚拟线程。这些线程彼此独立。

多处理包括两种类型,即对称多处理和非对称多处理。

Java中没有不同类型的多线程

多重处理既繁重又耗时

Java中的多线程是一个非常轻便和省时的过程

在多处理中,每个进程都拥有单独的内存位置

在Java的多线程过程中,线程共享相同的内存位置

如果一个处理器受到损害,则该CPU的相应进程或整个进程可能崩溃

由于所有线程都是相互独立的,如果任何线程被破坏,那么整个进程将不会受到任何影响。

接下来,您将了解Java中多线程的优点和缺点。

Java中多线程的优势

下面提到的是Java中多线程的几个优点:

Java-multithreading-advantages.

  • Java中的多线程提高了性能和可靠性

  • Java中的多线程大大缩短了执行周期

  • 在Java中使用多线程时,有一个流畅、无麻烦的图形用户界面响应

  • 软件维护成本更低

  • CPU和其他处理资源是明智使用的模式

Java中多线程的缺点

以下是Java中多线程的一些缺点:

Java-multithreading-disadvantages

  • Java中的多线程给代码调试带来了复杂性

  • Java中的多线程增加了进程执行中死锁的可能性

  • 在一些最糟糕的情况下,结果可能是不可预测的

  • 在移植代码时可能会出现复杂情况

至此,您已经结束了“Java中的多线程”教程。