欢迎访问宙启技术站
智能推送

Java之多线程方法状态和创建方法的示例分析

发布时间:2023-05-14 22:33:06

Java作为一种面向对象的编程语言,其支持并发编程,也就是多个线程同时执行不同的任务。多线程的主要目的在于提高程序的效率和性能,以及实现一些需要同时进行的操作。

在Java中,创建线程有两种方式:一种是继承Thread类并重写run()方法,另一种是实现Runnable接口并重写run()方法。下面分别对这两种创建方式进行详细的讲解。

继承Thread类并重写run()方法

在Java中,如果要创建一个新的线程,必须继承Thread类并重写其中的run()方法。run()方法是线程的执行体,当线程启动时,它会自动执行该方法。以下是一个示例代码:

public class MyThread extends Thread {
    public void run() {
        System.out.println("MyThread is running.");
    }
}

创建MyThread类之后,我们可以在主线程中创建这个线程并启动它:

public class Main {
    public static void main(String[] args) {
        MyThread thread = new MyThread();
        thread.start();
    }
}

当我们运行程序时,MyThread的run()方法会被自动调用,控制台会输出"MyThread is running."。

实现Runnable接口并重写run()方法

除了继承Thread类,我们还可以实现Runnable接口来创建线程。这种方式更加灵活,因为Java是单继承的,如果一个类已经继承了其他的类,那么就不能再继承Thread类了。以下是一个示例代码:

public class MyRunnable implements Runnable {
    public void run() {
        System.out.println("MyRunnable is running.");
    }
}

创建MyRunnable类之后,我们可以在主线程中创建这个线程并启动它:

public class Main {
    public static void main(String[] args) {
        MyRunnable runnable = new MyRunnable();
        Thread thread = new Thread(runnable);
        thread.start();
    }
}

当我们运行程序时,MyRunnable的run()方法会被自动调用,控制台会输出"MyRunnable is running."。

线程的状态

在Java中,线程有6种状态,分别是新建状态、可运行状态、阻塞状态、等待状态、计时等待状态和终止状态。以下是各种状态的详细说明:

1. 新建状态

当我们创建一个线程对象时,该线程处于新建状态,此时还没有启动线程。

2. 可运行状态

当线程调用了start()方法之后,该线程处于可运行状态,表示该线程已经被VM线程调度器接纳,可被运行。此时可能正在运行,也可能正在等待CPU资源。

3. 阻塞状态

当线程等待某个资源或某个条件满足时,该线程就处于阻塞状态。例如,当线程调用了sleep()方法、等待IO资源或者等待某个锁时,就会进入阻塞状态。

4. 等待状态

线程在某些情况下可能需要等待其他线程的一些操作,此时该线程处于等待状态。例如,调用了wait()方法,或者条件不满足时,线程会被挂起,等到其他线程进行某些操作之后,再进行唤醒。

5. 计时等待状态

与等待状态类似,计时等待状态指的是线程等待某个时间段之后才能被唤醒。例如,调用了sleep()方法,则线程会等待一定的时间之后再被唤醒。

6. 终止状态

线程执行完毕或者抛出了未捕获的异常之后,就处于终止状态。此时该线程已经不能再被执行,且不能被再次启动。

总结

Java中的多线程编程是一个重要的话题,这篇文章介绍了两种创建线程的方法和线程的六种状态。在实际的开发中,我们需要根据具体的需求选择合适的方法来创建线程,并根据线程的状态和生命周期来合理地调度和管理线程,从而实现更加高效和优秀的程序。