【Java基础教程】(四十二)多线程篇 · 上:多进程与多线程、并发与并行的关系,多线程的实现方式、线程流转状态、常用操作方法解析~
发布人:shili8
发布时间:2025-02-11 23:10
阅读次数:0
**Java基础教程**(四十二)**:多线程篇**
在上一篇文章中,我们讨论了进程与线程的区别,以及并发与并行的关系。今天我们将深入探讨多线程的实现方式、线程流转状态以及常用操作方法。
**1. 多线程的实现方式**
Java提供了两种方式来实现多线程:继承Thread类和实现Runnable接口。
###1.1 继承Thread类
javapublic class MyThread extends Thread { @Override public void run() { System.out.println("这是一个线程"); } }
在上面的代码中,我们创建了一个名为MyThread的线程类,继承了Thread类。我们可以通过调用start()方法来启动这个线程。
###1.2 实现Runnable接口
javapublic class MyRunnable implements Runnable { @Override public void run() { System.out.println("这是一个线程"); } }
在上面的代码中,我们创建了一个名为MyRunnable的类,实现了Runnable接口。我们可以通过调用start()方法来启动这个线程。
**2. 线程流转状态**
当我们启动一个线程后,它会进入以下几个状态:
* **NEW**(新建状态):线程被创建,但尚未启动。
* **RUNNABLE**(可运行状态):线程正在执行或准备执行。
* **BLOCKED**(阻塞状态):线程等待获取资源或者锁。
* **WAITING**(等待状态):线程正在等待另一个线程的通知。
* **TIMED_WAITING**(定时等待状态):线程正在等待另一个线程的通知,或者在指定时间内执行某些操作。
* **TERMINATED**(终止状态):线程已经完成执行。
我们可以通过Thread.getState()方法来获取当前线程的状态。
javapublic class MyThread extends Thread { @Override public void run() { System.out.println("这是一个线程"); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(Thread.currentThread().getState()); } }
在上面的代码中,我们启动了一个线程,然后休眠了一秒钟,最后输出当前线程的状态。
**3. 常用操作方法**
以下是常用的线程操作方法:
* **start()**: 启动线程。
* **run()**: 线程执行体。
* **join()**: 等待线程完成执行。
* **sleep(long millis)**:休眠指定时间。
* **yield()**: 线程让出CPU。
* **interrupt()**: 中断线程。
* **isAlive()**: 判断线程是否存活。
* **getState()**: 获取当前线程状态。
javapublic class MyThread extends Thread { @Override public void run() { System.out.println("这是一个线程"); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(Thread.currentThread().getState()); } public static void main(String[] args) throws InterruptedException { MyThread thread = new MyThread(); thread.start(); thread.join(); System.out.println(thread.getState()); } }
在上面的代码中,我们启动了一个线程,然后等待它完成执行,最后输出当前线程的状态。
以上就是关于Java多线程的基本内容。通过阅读本文,你应该能够理解多线程的实现方式、线程流转状态以及常用操作方法。