Java 中的线程

2022-09-02 00:50:10

今天在一次采访中,我被问到Java中的Thread概念?问题是...

  1. 什么是线程?
  2. 我们为什么要进行线程化?
  3. 线程上的实时示例。
  4. 我们可以在Spring框架服务类中创建线程吗?
  5. flex 可以调用线程吗?

除了Thread的定义之外,我没有回答任何问题,这也是我刚刚从互联网上学到的。

任何人都可以清楚地解释我。

更新

线程和普通的java类有什么区别,为什么我们需要线程化?我可以在线程中执行业务逻辑吗?我可以在线程中调用不同的类方法吗?


答案 1

若要创建线程,请创建一个扩展该类的新类,并实例化该类。扩展类必须重写该方法并调用该方法以开始执行线程。Threadrunstart

在 里面,您将定义构成新线程的代码。重要的是要了解它可以调用其他方法,使用其他类并像主线程一样声明变量。唯一的区别是为程序中的另一个并发执行线程建立入口点。这将在返回时结束。runrunrunrun

下面是一个示例:

public class MyThread extends Thread {
    private final String name;

    public MyThread(String name) {
        this.name = name;
    }

    public void run() {
        try {
            for (; ; ) {
                System.out.println(name);
                Thread.sleep(1000);
            }
        } catch (InterruptedException e) {
            System.out.println("sleep interrupted");
        }
    }

    public static void main(String[] args) {
        Thread t1 = new MyThread("First Thread");
        Thread t2 = new MyThread("Second Thread");
        t1.start();
        t2.start();
    }
}

您将在屏幕上看到以下内容:

First Thread
Second Thread
First Thread
Second Thread
First Thread

本教程还介绍了该接口。使用Spring,您可以使用线程池Runnable


答案 2

多线程处理是一项 Java 功能,它允许并发执行程序的两个或多个部分,以最大限度地利用 CPU。此类程序的每个部分称为一个线程。VoI

线程是进程中的轻量级进程。

线程可以通过使用两种机制来创建:

  1. 扩展线程类
  2. 实现可运行接口

通过扩展 Thread 类创建线程

我们创建一个扩展该类的类。此类重写类中可用的方法。线程在方法内部开始其生命。我们创建新类的对象并调用方法来启动线程的执行。 调用对象上的方法。java.lang.Threadrun()Threadrun()start()Start()run()Thread

class MultithreadingDemo extends Thread{
public void run()    {
    try {   // Displaying the thread that is running
        System.out.println ("Thread " + Thread.currentThread().getId() 
                                + " is running"); 
        }
        catch (Exception e){   // Throwing an exception
            System.out.println ("Exception is caught");
        }
    }
} 
public class Multithread{
    public static void main(String[] args)    {
        int n = 8; // Number of threads
        for (int i=0; i<8; i++)        {
            MultithreadingDemo object = new MultithreadingDemo();
            object.start();
        }
    }
}

通过实现可运行接口创建线程

我们创建一个实现接口和重写方法的新类。然后,我们实例化一个 Thread 对象,并在此对象上调用方法。java.lang.Runnablerun()start()

class MultithreadingDemo implements Runnable{
public void run()    {
    try   {     // Displaying the thread that is running
        System.out.println ("Thread " +  Thread.currentThread().getId() +
                            " is running");

    }
    catch (Exception e)   {     // Throwing an exception
        System.out.println ("Exception is caught");
    }
    }
} 
class Multithread{
    public static void main(String[] args)    {
        int n = 8; // Number of threads
        for (int i=0; i<8; i++)        {
            Thread object = new Thread(new MultithreadingDemo());
            object.start();
        }
    }
}

线程类与可运行接口

  1. 如果我们扩展 Thread 类,我们的类就无法扩展任何其他类,因为 Java 不支持多重继承。但是,如果我们实现 Runnable 接口,我们的类仍然可以扩展其他基类。

  2. 我们可以通过扩展 Thread 类来实现线程的基本功能,因为它提供了一些内置方法,如 yield()、interrupt() 等,这些方法在 Runnable 接口中不可用。