在Java中,main方法的执行是1个线程。但是Java本身是可以多线程的。下面是一个Java类,为了实现多线程 Java 类需要继承 Thread 类。我们可以了解到 Thread 类。Thread 类是一个非常重要的线程类,它实现了 Runnable 接口。我们只需要使用 Thread 类的 start() 方法 来启用一个新线程,然后再重写 Thread 类的 run 方法来执行线程任务即可。

相关方法属性
start()启用进程
run()执行线程任务
public class Main extends Thread{
    //执行线程任务
    public void run(){
        for(int i = 0;i<5;i++){
            System.out.println("一边听音乐");
        }
    }
    public static void main(String[] args) {
        //实例化类对象
        Main m = new Main();
        //启用1个线程
        m.start();
        
        for(int a = 0;a<5;a++){
            System.out.println("一边写代码");
        }
    }
}

在这个过程中,会启用1个新线程来执行 run 方法,JVM 与 操作系统进行打交道,根据 CPU 处理情况来进行线程任务.

运行结果:

一边写代码
一边写代码
一边听音乐
一边听音乐
一边听音乐
一边写代码
一边写代码
一边写代码
一边听音乐
一边听音乐

可以看到它们可以同时的进行工作.

上面是继承 Thread 类的一种实现方法,另一种方法是直接实现 Runnable 接口来实现线程。由于 Java 不支持类的多继承,只支持接口的多继承,这种方法对比直接继承 Thread 类的好处在于可以继承其它类,同时也能实现线程功能。

public class Main implements Runnable {
    public void run() {
        System.out.println("启用进程1!");
    }
    public static void main(String[] args) {
        Main m = new Main();
        new Thread(m).start();
    }
}

Thread类常用API

名称说明
Thread()构造一个线程对象
Thread(string)构造一个线程对象并指定线程名


相关参数属性
priority线程优先级
daemon是否保持线程
target要执行的任务


相关方法属性
currentThread()返回正在运行的线程对象
activeCount()返回正在运行的线程数量
yield()使当前线程对象暂停
sleep()使当前线程对象暂定指定毫秒数
stop()停止线程并释放线程的对象锁
interrupt()中断此线程
join()如果启用线程A时,调用join会等待线程A死亡才执行线程B
setPriority()设置线程优先级
setDaemon()设置是否为后台线程(需在线程启用前使用)
checkAccess()判断当前线程是否有权力修改调用此方法的线程
setName()更改本线程的名称为指定参数
isAlive()测试线程是否为活动状态,返回相关布尔值
文章目录