多线程——测试Thread类中的常用方法、线程的优先级、线程的分类(守护线程、用户线程)

本文介绍了Java中线程的常用方法,包括start(), run(), currentThread(), getName(), setName(), yield(), join(), stop(), sleep(), isAlive()等。同时,讨论了线程的优先级,如MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY,并讲解了如何获取和设置线程优先级。此外,还阐述了Java线程的两类:用户线程和守护线程,以及如何将线程转换为守护线程。" 83624035,8017146,深度学习图像识别:关键函数详解,"['深度学习', '图像处理', '机器学习', 'TensorFlow', '神经网络']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 测试Thread类中的常用方法

    • 1.start():启动当前线程;调用当前线程的run()
    • 2.run():通常需要重写Thread类中的此方法,将创建的线程要执行的操作声明在此方法中
    • 3.currentThread():static;返回执行当前代码的线程
    • 4.getName():获取当前线程的名字
    • 5.setName():设置当前线程的名字
    • 6.yield():释放当前CPU的执行权
    • 7.join():在线程A中调用B的join(),此时线程A进入阻塞状态,直到线程B完全执行完以后,线程A才结束阻塞状态
    • 8.stop():已过时。当执行此方法时强制结束当前线程
    • 9.sleep(long milliTime):让当前线程阻塞指定的毫秒数,在指定的milliTime内,当前的线程是阻塞状态
    • 10.isAlive():判断当前线程是否存活
  • 线程的优先级:

    • 1.MAX_PRIORITY:10
    • MIN_PRIORITY:1
    • NORM_PRIORITY:5 -->默认优先级
  • 如何获取和设置当前线程的优先级?

    • getPriority():获取线程的优先级
    • setPriority(int p):设置线程的优先级
    • 说明:高优先级线程要抢占低优先级线程CPU的执行权,但只是从概率上来讲,高优先级的线程高概率被执行,不代表高优先级的线程执行完成后,低优先级的线程才被执行
public class ThreadMethodTest {
    public static void main(String[] args) {
        MyThread myThread = new MyThread();
 
        myThread.setName("线程一"); //设置线程名
        myThread.start();//启动线程

        Thread.currentThread().setName("主线程");//Thread.currentThread():静态方法,获取当前线程

        for (int i = 0; i < 100; i++) {
            
            if (i % 2 == 0) {
                System.out.println(Thread.currentThread().getName() + ":" + i + "*******");
            }

            if (i == 20) {
                try {
                    myThread.join();//插入“线程一”,主线程等待该线程结束后再执行
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }


    }
}

class MyThread extends Thread {
    @Override
    public void run() {
        for (int i = 0; i < 100; i++) {
            if (i % 2 == 0) {

                try {
                    sleep(1000);//睡眠1000ms
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }

                System.out.println(Thread.currentThread().getName() + ":" + i);
            }

//            if (i % 20 == 0) {
//                yield();//让步指令,释放当前CPU的执行权,但实际上CPU依旧有可能继续执行该线程
//            }
        }
    }
}

Java中的线程分为两类:一种是守护线程,一种是用户线程。它们在几乎每个方面都是相同的,唯一的区别是判断JVM何时离开。守护线程是用来服务用户线程的,通过在start()方法前调用thread.setDaemon(true)可以把一个用户线程变成一个守护线程。Java垃圾回收就是一个典型的守护线程。若JVM中都是守护线程,当前JVM将退出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值