栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

线程的常用方法

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

线程的常用方法

线程的常用方法
  1. setName // 设置线程名称,使之与参数name相同
  2. getName // 返回该线程名称
  3. start // 使线程开始执行,java虚拟机底层调用线程的start0()方法
  4. run // 调用该线程的run方法
  5. setPriority //更改线程的优先级
  6. getPriority // 获取线程的优先级
  7. sleep // 在指定的毫秒数内让当前正在执行的线程休眠(暂停执行)
  8. interrupt // 中断线程

常用方法的练习

package com.yuecheng.hspedu.exit.method;

public class ThreadMethod01 {
    public static void main(String[] args) throws InterruptedException {
        //测试相关的方法
        ThreadDemo01 threadDemo01 = new ThreadDemo01();
        threadDemo01.setName("婉茹");
        threadDemo01.setPriority(Thread.MIN_PRIORITY);
        threadDemo01.start();//启动子线程


        //主线程打印五个hi,然后中断子线程的休眠
        for (int i = 0; i < 5; i++) {
            Thread.sleep(1000);
            System.out.println("hi "+i);
            System.out.println(threadDemo01.getName()+"threadDemo01线程的优先级是"+threadDemo01.getPriority());
        }

        threadDemo01.interrupt();//当执行到这里时,就会中断threadDemo01线程的休眠,

    }
}
class ThreadDemo01 extends Thread{//自定义线程类
    @Override
    public void run() {
        int count= 0 ;
        while(true){
        for (int i = 0; i < 100; i++) {
            System.out.println(Thread.currentThread().getName()+"狂吃了"+i+"个包子");
        }
        try {
            System.out.println(Thread.currentThread().getName()+"线程休眠中"+count++);
            Thread.sleep(20000);
        } catch (InterruptedException e) {
            //当一个线程执行到一个interrupt方法时,就会catch一个异常,可以加入自己的业务代码
            //InterruptedException捕获到一个中断异常
            System.out.println(Thread.currentThread().getName()+ "被interrupt了");

        }
    }
    }
}

注意事项
  1. start底层会创建新的线程,如果直接用对象调用run,run就是一个简单的方法调用,不会创建新的线程。
  2. 线程的优先级范围:
  3. interrupt,中断线程,但没有真正结束线程,所以一般用于唤醒休眠的线程。
  4. sleep:线程的静态方法,使当前线程休眠。
常用方法第二组

1.yield:线程的礼让。让出cpu,让其他线程执行,但礼让的时间不确定,所以也不一定成功。

2.join:线程的插队。插队的线程一旦插队成功则肯定先执行完插队的线程的所有的任务。

  • 案例:创建一个子线程,每隔1s输出hello,输出20次,主线程每隔1s,输出hi输出20次。要求:两个线程同时执行,当主线程输出5次后,就让子线程运行完毕,主线程再继续。
package com.yuecheng.hspedu.exit.method;

public class ThreadMethod022 {
    public static void main(String[] args) throws InterruptedException {


        A1 a1 = new A1();
        Thread t1 = new Thread(a1);
        t1.start();

        for (int i = 1; i <=20; i++) {
            System.out.println("hi "+i);
            Thread.sleep(500);
            if(i==5){
                System.out.println("主线程已经输出了"+i+"个hi");
                t1.join();//这里相当于让子线程t1插队,先执行!
            }
        }


    }
}
class A1 implements Runnable{
    @Override

    public void run() {
        int i =1;
        while(i<=20){
        System.out.println("hello "+i);
        i++;
        try {
            Thread.sleep(500);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        }
    }
}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/351340.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号