2.线程常见方法

2023-10-31

Java多线程文章目录

目录

设置优先级

join方法

sleep方法

sleep()实现秒表功能

常见面试题

setDaemon方法


设置优先级

  • 同优先级别的线程,采取的策略就是先到先服务,使用时间片策略
  • 如果优先级别高,被CPU调度的概率就高(是概率高,不是一定)
  • 级别:1-10,默认级别是5

Thread类(java.lang包下)

public class TestThread01 extends Thread {
    @Override
    public void run() {
        for (int i = 0; i < 10; i++) {
            System.out.println(i);
        }
    }
}

class TestThread02 extends Thread {
    @Override
    public void run() {
        for (int i = 0; i < 20; i++) {
            System.out.println(i);
        }
    }
}

class TestThread {
    // Main方法:
    public static void main(String[] args) {
        // 创建两个子线程,让这两个子线程争抢资源
        TestThread01 testThread01 = new TestThread01();
        testThread01.setPriority(10);
        testThread01.start();

        TestThread02 testThread02 = new TestThread02();
        testThread02.setPriority(1);
        testThread02.start();
    }
}

join方法

        join方法:当一个线程调用了join方法,这个线程就会先被执行,它执行结束以后才可以去执行其余的线程。

注:必须先start(),再join()才有效

sleep方法

sleep():人为制造阻塞状态

运行后控制台显示运行完成,但是数字会在3秒后输出在控制台

sleep()实现秒表功能

public class Test01 {
    // Main方法:
    public static void main(String[] args) {
        // 定义一个时间格式
        DateFormat df = new SimpleDateFormat("HH:mm:ss");
        while(true){
            // 获取当前时间:
            Date d = new Date();
            // 按照上面定义的格式将Date类型转为指定格式的字符串:
            System.out.println(df.format(d));
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

常见面试题

sleep()、wait()和yield()的区别

  • 区别
    • sleep()和yield()是Thread类中的方法
    • wait()是Object类中的方法
    • 也就是说,在java中,所有的类都有wait()方法,而只有继承了Thread类的才有sleep()和yield()方法
  • sleep()和wait()的区别
    • 线程调用sleep()方法后,短暂暂停线程的运行,当前线程不会释放它的资源
    • wait()方法用于线程间的通信,线程调用wait()方法后,当前线程会释放它的资源
  • sleep()和yield()的区别
    • sleep()是被动的(被写代码的,人为进入阻塞状态)
    • yield()是主动的,当前线程已经执行的差不多了,告诉CPU“可以把我的资源让给比我线程优先级更高的线程或者跟我同级的线程去执行”,如果没有这样的线程,那么当前线程继续执行,如果有那么当前线程进入就绪状态

setDaemon方法

设置伴随线程:将子线程设置为主线程的伴随线程,主线程停止的时候,子线程也不要继续执行了

public class TestThread02 extends Thread {
    @Override
    public void run() {
        for (int i = 0; i < 1000; i++) {
            System.out.println("子线程---" + i);
        }
    }

    // Main方法:
    public static void main(String[] args) {
        // 创建并启动子线程
        TestThread02 testThread02 = new TestThread02();
        testThread02.setDaemon(true);
        testThread02.start();

        // 主线程输出1-10数字
        for (int i = 0; i < 10; i++) {
            System.out.println("主线程---" + i);
        }
    }
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

2.线程常见方法 的相关文章

随机推荐

  • qt富文本编辑基本知识(QTextBlockFormat、QTextListFormat)

    可以参考该文章 QTextBlockFormat QTextListFormat 程序员大本营 核心知识如下 如果想开发一个富文本编辑器 html markdown等常见格式 Qt已经为用户完成了几乎所有与编辑有关的具体工作 我们所要做的就
  • yarn中的container概念

    http dongxicheng org mapreduce nextgen understand yarn container concept 步骤1 用户将应用程序提交到ResourceManager上 步骤2 ResourceMana
  • Go语言面试题--基础语法(6)

    文章目录 1 关于init函数 下面说法正确的是 2 下面这段代码输出什么以及原因 3 下面这段代码能否编译通过 如果可以 输出什么 1 关于init函数 下面说法正确的是 A 一个包中 可以包含多个 init 函数 B 程序编译时 先执行
  • centOS7下Spark安装配置

    环境说明 操作系统 centos7 64位 3台 centos7 1 192 168 190 130 master centos7 2 192 168 190 129 slave1 centos7 3 192 168 190 131 sla
  • STM32端口功能详情图

    硬件接口对照表 注释标识 对应芯片IO 上下拉 功能 接口封装 电源归属 可外接IO 1 无 无 电源接口 DC 5 5 2 1 无 不可以 2 无 无 电源开关 无 3 无 无 电源接口 XT30 4 无 无 DC5V4A输出 USB母座
  • easycms v5.5 分析

    前言 这个awd打的悲 后台默认用户名密码为admin admin 但是几乎所有人都改了 而且一进去看到这个cms就有点懵逼 都不知道这个cms是干嘛的 没用过相似的cms 虽然网上找出了很多相关的漏洞 但是不知道为什么一个都没用上 或者说
  • Qt画圆弧

    Qt画圆弧
  • 第三步:脑波提取alpha,beta,delta,theta

    4 brain power py import os from process eeg import iir processing import pandas as pd import numpy as np def mkdir path
  • shell编程--函数

    函数 定义格式 1 function name command1 commandn 2 function function name command1 commandn 注意 所有函数需要在使用前被定义 一般将函数定义放在脚本开始地方 自定
  • 华为OD机试 - 最长的完全交替连续方波信号(Java)

    题目描述 输入一串方波信号 求取最长的完全连续交替方波信号 并将其输出 如果有相同长度的交替方波信号 输出任一即可 方波信号高位用1标识 低位用0标识 如图 说明 一个完整的信号一定以0开始然后以0结尾 即010是一个完整信号 但101 1
  • 选Redis做MQ的人,是脑子里缺根弦儿吗?

    V xin ruyuan0330 获得600 页原创精品文章汇总PDF 目录 一 前情提示 二 unack消息的积压问题 三 如何解决unack消息的积压问题 四 高并发场景下的内存溢出问题 五 低吞吐量问题 六 合理设置prefetch
  • 数据库查询出结果后将时间排序后取第一条

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 查询出结果后将时间排序后取第一条 select from a where time lt 2017 03 29 19 30 36 order by time desc li
  • Hive 表操作(HIVE的数据存储、数据库、表、分区、分桶)

    1 Hive的数据存储 Hive的数据存储基于Hadoop HDFS Hive没有专门的数据存储格式 存储结构主要包括 数据库 文件 表 试图 Hive默认可以直接加载文本文件 TextFile 还支持sequence file 创建表时
  • windows11 打开chrome浏览器闪屏黑屏问题

    windows11 家庭版打开chrome浏览器的时候 电脑闪屏 甚至长时间黑屏 不得不重启 修复方法 在Google Chrome中禁用 平滑滚动 1 打开chrome 然后输入在地址栏输入 chrome flags 2 搜索名为Smoo
  • 8招搞定XenServer虚拟机优化

    XenServer是一款虚拟机软件 他的免费版本功能相对强大 相比VMware的ESXi来说 所以现在很多企业简单应用上都会用这款软件 以减小开支 VMware收费实在是太贵了 一般的企业是承担不起的 一般虚拟化之后 一台宿主机上面都会运行
  • 也说MSDN

    看到iCynosure在介绍 MSDN使用经验 忍不住也进来加两句 平时很喜欢在IE里面用alt D来切换到地址栏 但是MSDN Explorer不支持这个快捷方式 经过一番研究发现可以通过Option里面的keyboard来自定义快捷键
  • react基础04--redux 管理数据

    react基础04 redux 管理数据 1 介绍 2 方法 案例 在多个组件中使用Store中的数据 规范 store 写法 修改Store中的数据 refs属性获取元素对象 redux thunk 中间件 3 注意事项 4 说明 1 介
  • 怎么在蓝桥杯多拿点分

    蓝桥杯常考的算法有 1 枚举 暴力 2 递归 3 贪心 4 搜索 dfs和bfs 等基础算法 难度比较大的是动态规划 严格按要求输出 不要画蛇添足地打印类似 请您输入 的多余内容 能用到的函数 比如sort next permutation
  • Matplotlib可视化(2)设置pyplot的rcParams

    pylot使用rc配置文件来自定义图形的各种默认属性 称之为rc配置或rc参数 通过rc参数可以修改默认的属性 包括窗体大小 每英寸的点数 线条宽度 颜色 样式 坐标轴 坐标和网络属性 文本 字体等 rc参数存储在字典变量中 通过字典的方式
  • 2.线程常见方法

    Java多线程文章目录 目录 设置优先级 join方法 sleep方法 sleep 实现秒表功能 常见面试题 setDaemon方法 设置优先级 同优先级别的线程 采取的策略就是先到先服务 使用时间片策略 如果优先级别高 被CPU调度的概率