IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 线程的常用方法 -> 正文阅读

[Java知识库]线程的常用方法

线程的常用方法

  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();
        }
        }
    }
}


  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-10-28 12:16:13  更:2021-10-28 12:17:27 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 23:58:40-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码