Java基础 - 多线程

多线程

创建新线程

实例化一个Thread实例,然后调用它的start()方法

java 复制代码
Thread t = new Thread();
t.start(); // 启动新线程

从Thread派生一个自定义类,然后覆写run()方法:

java 复制代码
public class Main {
    public static void main(String[] args) {
        Thread t = new MyThread();
        t.start(); // 启动新线程
    }
}

class MyThread extends Thread {
    @Override
    public void run() {
        System.out.println("start new thread!");
    }
}

创建Thread实例时,传入一个Runnable实例:

java 复制代码
public class Main {
    public static void main(String[] args) {
        Thread t = new Thread(new MyRunnable());
        t.start(); // 启动新线程
    }
}

class MyRunnable implements Runnable {
    @Override
    public void run() {
        System.out.println("start new thread!");
    }
}

用Java8引入的lambda语法进一步简写为:

java 复制代码
public class Main {
    public static void main(String[] args) {
        Thread t = new Thread(() -> {
            System.out.println("start new thread!");
        });
        t.start(); // 启动新线程
    }
}

sleep()传入的参数是毫秒。

调整暂停时间的大小,我们可以看到main线程和t线程执行的先后顺序。

线程的优先级

可以对线程设定优先级,设定优先级的方法是:

java 复制代码
Thread.setPriority(int n) // 1~10, 默认值5

线程的状态

New:新创建的线程,尚未执行;

Runnable:运行中的线程,正在执行run()方法的Java代码;

Blocked:运行中的线程,因为某些操作被阻塞而挂起;

Waiting:运行中的线程,因为某些操作在等待中;

Timed Waiting:运行中的线程,因为执行sleep()方法正在计时等待;

Terminated:线程已终止,因为run()方法执行完毕。

当线程启动后,它可以在Runnable、Blocked、Waiting和Timed Waiting这几个状态之间切换,直到最后变成Terminated状态,线程终止。

相关推荐
奕澄羽邦4 分钟前
二级Python通关秘籍:字符串操作符/函数/方法全解析与实战演练
开发语言·python
Spring小子15 分钟前
蓝桥杯[每日两题] 真题:好数 神奇闹钟 (java版)
java·数据结构·算法·蓝桥杯
Ιτ-ωoгκεг19 分钟前
在 Java 中使用 Apache POI 为 Word 文档添加水印
java·word·apache·poi·水印
已是上好佳31 分钟前
介绍一下Qt中的事件过滤
java·服务器·数据库
go546315846535 分钟前
简单的 Python 示例,用于生成电影解说视频的第一人称独白解说文案
开发语言·python
vvilkim39 分钟前
使用 JavaScript 和 HTML5 实现强大的表单验证
开发语言·javascript·html5
Java中文社群40 分钟前
面试官:你项目是如何保证高可用的?
java·后端·面试
不修×蝙蝠1 小时前
SpringBoot(一)--搭建架构5种方法
java·spring boot·架构·配置·搭建
程高兴1 小时前
中性点不接地系统单相接地故障Matlab仿真
开发语言·matlab
AI很强1 小时前
matlab常见的配图代码实现1
开发语言·算法·matlab