Thread类的用法

1.线程创建

(1)可以通过继承Thread创建并重写run方法

(2)可以通过Runnable接口重写run方法

(3)可以使用匿名内部类创建Thread子类对象

(4)可以使用匿名内部类创建Runnable子类对象

(5)可以使用Lambda表达式(一般使用这个看起来清楚些)

2.线程中断

直接使用Java内部Thread的 Thread.currentThread().isInterrupted() 方法 然后使用

interrupt()中断
public static void main(String[] args) {
    Thread t = new Thread(()->{
        while (!Thread.currentThread().isInterrupted()) {
            System.out.println("hello thread");
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                //e.printStackTrace();
                break;
            }
        }
        System.out.println("t 线程执行完了");
    });

    t.start();

    try {
        Thread.sleep(3000);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }

    t.interrupt();
    System.out.println("设置让 t 线程结束!");
}

3.线程等待

在Java中使用join()方法实现线程的等待

在main中调用 t.join() 的效果就是:让main线程先堵塞等待,等到 t 执行完成之后 main线程才继续执行

使用t.join()不带参数的意思:就好像是不见不散一样,必须等到t线程结束了才可以执行main线程

使用t.join()带参数的意思:就是等到那个时候了 t.join() 线程还没结束 那就不等了,就执行main线程

4.线程休眠

使用Thread.sleep() 方法实现线程的休眠,让线程阻塞 括号里面可以指定休眠的时长单位为毫秒

操作系统管理这个线程的PCB的时候是有多个链表的,系统中的PCB分布在就绪队列和堵塞队列(队列中是有链表串联起来的),一个线程在就绪队列中中某一个链表调用了sleep ,则这个PCB就会被移动到堵塞队列中 等到时间一到 就返回就绪队列里面原来的那个位置(且回去了也不一定立马就被执行 得看系统的心情)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值