Java线程:线程的调度-休眠

2023-11-17

本文转载至:http://lavasoft.blog.51cto.com/62575/221790

Java线程:线程的调度-休眠
 
Java线程调度是Java多线程的核心,只有良好的调度,才能充分发挥系统的性能,提高程序的执行效率。
 
这里要明确的一点,不管程序员怎么编写调度,只能最大限度的影响线程执行的次序,而不能做到精准控制。
 
线程休眠的目的是使线程让出CPU的最简单的做法之一,线程休眠时候,会将CPU资源交给其他线程,以便能轮换执行,当休眠一定时间后,线程会苏醒,进入准备状态等待执行。
 
线程休眠的方法是Thread.sleep(long millis) 和Thread.sleep(long millis, int nanos) ,均为静态方法,那调用sleep休眠的哪个线程呢?简单说,哪个线程调用sleep,就休眠哪个线程。

/** 
* Java线程:线程的调度-休眠 
* 
* @author leizhimin 2009-11-4 9:02:40 
*/ 
public class Test { 
        public static void main(String[] args) { 
                Thread t1 = new MyThread1(); 
                Thread t2 = new Thread(new MyRunnable()); 
                t1.start(); 
                t2.start(); 
        } 
} 

class MyThread1 extends Thread { 
        public void run() { 
                for (int i = 0; i < 3; i++) { 
                        System.out.println("线程1第" + i + "次执行!"); 
                        try { 
                                Thread.sleep(50); 
                        } catch (InterruptedException e) { 
                                e.printStackTrace(); 
                        } 
                } 
        } 
} 

class MyRunnable implements Runnable { 
        public void run() { 
                for (int i = 0; i < 3; i++) { 
                        System.out.println("线程2第" + i + "次执行!"); 
                        try { 
                                Thread.sleep(50); 
                        } catch (InterruptedException e) { 
                                e.printStackTrace(); 
                        } 
                } 
        } 
}
运行结果:

线程2第0次执行! 
线程1第0次执行! 
线程1第1次执行! 
线程2第1次执行! 
线程1第2次执行! 
线程2第2次执行!



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

Java线程:线程的调度-休眠 的相关文章

  • (Java 基础知识) Java反射

    本篇文章依旧采用小例子来说明 因为我始终觉的 案例驱动是最好的 要不然只看理论的话 看了也不懂 不过建议大家在看完文章之后 在回过头去看看理论 会有更好的理解 下面开始正文 案例1 通过一个对象获得完整的包名和类名 1 2 3 4 5 6
  • Java 终止嵌套for 循环总结

    public class NestedLoopDemo public static void main String args 第一步 构建嵌套for 循环 for int i 0 i lt 10 i for int j 0 j lt 10
  • java并发包:读写锁

    本文转载至 http blog csdn net a910626 article details 51900954 ReadWriteLock是jdk5中提供的读写分离锁 读写分离锁可以有效的帮助减少锁竞争 以提升性能 用锁分离的机制来提升
  • Java 父类 与子类之间的转换

    一 子类的实列化通过父类实现 代码正常 二 基于子类的实列化是通过父类实现 强制转换父类 代码正常 三 父类的实列化不能强制转换为子类 代码错误 提示 java lang ClassCastException 针对第三种情况 建议采用方案
  • java 阻塞模式与非阻塞模式

    TCP IP 阻塞模式与非阻塞模式 java view plain copy print package concurrentTest import java io BufferedReader import java io IOExcep
  • Java线程:线程栈模型与线程的变量

    本文转载至 http lavasoft blog 51cto com 62575 99152 要理解线程调度的原理 以及线程执行过程 必须理解线程栈模型 线程栈是指某时刻时内存中线程调度的栈信息 当前调用的方法总是位于栈顶 线程栈的内容是随
  • Java线程:新特征-障碍器

    本文转载至 http lavasoft blog 51cto com 62575 222738 Java5中 添加了障碍器类 为了适应一种新的设计需求 比如一个大型的任务 常常需要分配好多子任务去执行 只有当所有子任务都执行完成时候 才能执
  • java并发包:概论

    本文转载至 http blog csdn net a910626 article details 51900917 为什么要学习并发 今天和一哥们聊天 聊着聊着聊到钱的方面 当时我就说 全世界60亿人 要是每人给我一块钱那不就发财了啊 哥们
  • 线程管理之获取和设置线程信息

    获取和设置线程信息 Thread类的对象中保存了一些属性信息能够帮助我们来辨别每一个线程 知道它的状态 调整控制其优先级 这些属性是 ID 每个线程的独特标识 Name 线程的名称 Priority 线程对象的优先级 优先级别在1 10之间
  • Java 生成随机数全数字方式

    生成9位随机数字 System out println int Math random 9 1 100000000 生成8位随机数字 System out println int Math random 9 1 10000000 生成6位随
  • Java 数组 初始化方式 和遍历方式

    Java 数组 初始化方式总结 第一种 静态初始化 所谓静态初始化 初始化时由程序员显式指定每个数组元素的初始值 有系统决定数组的长度 简单实例 String strArr 张三 李四 王五 第二种 动态初始化 所谓动态初始化 初始化时由程
  • Java线程:新特征-信号量

    本文转载至 http lavasoft blog 51cto com 62575 222469 Java线程 新特征 信号量 Java的信号量实际上是一个功能完毕的计数器 对控制一定资源的消费与回收有着很重要的意义 信号量常常用于多线程的代
  • 代码质量保障第2讲:单元测试 - 浅谈单元测试

    代码质量保障第2讲 单元测试 浅谈单元测试 本文是代码质量保障第2讲 浅谈单元测试 单元测试 unit testing 是指对软件中的最小可测试单元进行检查和验证 这是基础 所以围绕着单元测试 我从网上搜集和总结了相关的概念 以助你完善体系
  • java并发包:生产者消费者模式

    本文转载至 http blog csdn net a910626 article details 51900974 生产者消费者模式是一个经典的多线程设计模式 它为多线程间的协作提供了良好的解决方案 在生产者消费者模式中 通常有两类线程 即
  • Java线程:线程状态的转换

    本文转载至 http lavasoft blog 51cto com 62575 99153 一 线程状态类型 1 新建状态 New 新创建了一个线程对象 2 就绪状态 Runnable 线程对象创建后 其他线程调用了该对象的start 方
  • java 多线程学习笔记之 线程同步

    在前面我们将了很多关于同步的问题 然而在现实中 需要线程之间的协作 比如说最经典的生产者 消费者模型 当队列满时 生产者需要等待队列有空间才能继续往里面放入商品 而在等待的期间内 生产者必须释放对临界资源 即队列 的占用权 因为生产者如果不
  • (Java基础知识) 几种Java任务调度比较

    前言 任务调度是指基于给定时间点 给定时间间隔或者给定执行次数自动执行任务 本文由浅入深介绍四种任务调度的 Java 实现 Timer ScheduledExecutor 开源工具包 Quartz 开源工具包 JCronTab 此外 为结合
  • Java线程:新特征-阻塞栈

    本文转载至 http lavasoft blog 51cto com 62575 222530 对于阻塞栈 与阻塞队列相似 不同点在于栈是 后入先出 的结构 每次操作的是栈顶 而队列是 先进先出 的结构 每次操作的是队列头 这里要特别说明一
  • Java线程:线程的调度-休眠

    本文转载至 http lavasoft blog 51cto com 62575 221790 Java线程 线程的调度 休眠 Java线程调度是Java多线程的核心 只有良好的调度 才能充分发挥系统的性能 提高程序的执行效率 这里要明确的
  • (java 基础知识) Java打印---javax.print

    package com print import java io import javax print import javax print attribute import javax print attribute standard p

随机推荐

  • secure boot 是什么

    一 secure boot 是什么 secure boot 中文叫安全启动 是电脑行业成员共同开发的一种安全机制 用于确保电脑只能启动原装系统 如果电脑重装了其他系统 那么这个系统是启动不了的 说白了 就是垄断 所以安装完其他系统 必须关闭
  • flex伸缩布局看着一篇就够啦

    flex伸缩布局 flex弹性概念 弹性盒子是一种按行或者按列布局元素的一种布局方式 它是需要父子盒子嵌套使用的 作用在父盒子 容器 上的属性有 flex direction 改变轴方向 flex wrap 换行 flex flow 前两项
  • 项目重点问题

    面试大保健 https blog csdn net Mrerlou article details 114295888 ops request misc 257B 2522request 255Fid 2522 253A 252216786
  • Java Swing图书管理系统,界面漂亮功能全,完整源码、下载直接使用 -417

    今天为利用晚上的一小段时间为大家分享一个写的不错的窗体程序 图书管理系统 417 系统功能已经比较全面 而且界面非常漂亮 有较强的参考和使用价值 项目系统有完整源码 下载后即可以运行 希望大家可以喜欢 喜欢的帮忙点赞和关注 一起编程 一起进
  • Shell脚本运行中的停止方法

    Linux系统Shell中提交了一个脚本 但是需要停止这个进程 如何处理 方式1 killall file flume kafka 说明 killall是一个命令 不是kill all file flume kafka是脚本名 此方法简单粗
  • MyBatis-Plus 的基础增删改查

    目录 1 简介 2 准备工作 3 MyBatis Plus 实现增删改查 1 MyBatis Plus 简介 MyBatis Plus 简称 MP 是 MyBatis 的增强工具 在 MyBatis 的基础上只做增强不做改变 为简化开发 提
  • 探索APP进程的启动流程(二)完结篇

    首先回顾下冷启动的流程图 共有四个步骤 1 launcher进程通过binder请求ams启动Activity AMS进程查询内存中是否存在该进程 2 内存中无相应进程 ams通过socket发送创建进程命令和相关资料到zygote进程 3
  • [HackTheBox]WEB题目

    0x01 50 Points I know Mag1k 问题描述 Can you get to the profile page of the admin 访问分配的地址 是一个带注册的登入页面 尝试常规注入 无效 来到注册页面注册 再退出
  • Springboot 实现发送邮件功能,使用QQ邮箱

    引入依赖
  • 若依分离版 --- 设置多数据源(主mysql,从sqlserver)

    主库mysql 从库sqlserver 1 修改application druid yml配置 配至slave 修改validationQuery SELECT 1 要不然sqlserver会报错 下面是完整的配置 可直接使用 根据自己情况
  • 朴素贝叶斯与KNN算法

    朴素贝叶斯算法 数学基础 我们先举一个例子 投硬币是一个随机过程 我们不能预测任意一次投币结果是正面还是反面 我们只能谈论其下一次结果是正面或者反面的概率 如果容貌取得一些额外的数据 如硬币的精准成分 硬币的最初位置 投币的力量与方向 硬币
  • springmvc+mybatis+mysql+log4j.xml+logjdbc+maven聚合+nexus+dubbo demo骨架

    说明 该项目采用maven聚合工程 项目骨架是我们以前架构师搭建骨架 现在已经拆分出来供大家下载使用 可以扩展使用 里面用到技术有springmvc mybatis mysql log4j xml logjdbc maven nexus d
  • java项目整合linux上的redis

    在linux上部署redis 1 在linux上安装redis 先下载redis 下载网址为 https redis io 放到 usr local src目录下 使用命令解压tar xzvf redis tar gz 进入redis目录
  • OWASP Dependency-Check工具集成

    OWASP Dependency Check工具集成 SonarQube 插件不执行分析 而是读取现有的 Dependency Check 报告 先要通过Jenkins插件去执行扫描 然后sonar里面再分析报告 一 搭建本地NVD Mir
  • 解决新版edge浏览器首页被搜狗、haoqq等垃圾搜索引擎捆绑问题,并将启动首页设为edge自带新标签页

    最近想试一下edge浏览器 发现每次启动都是这个haoqq com 这是主页被恶意挟持了 经过不懈努力终于给他关闭了 edge真香 解决步骤 1 打开电脑管家 或火绒软件 找到浏览器保护 电脑管家是在工具箱里 火绒的话在防护中心 系统防护
  • Verilog:【1】时钟分频电路(clk_divider.sv)

    碎碎念 作为Basic Verilog的第一个学习笔记 打算用这种命名方式来对博客进行命名 应该有助于检索 简单阅览了部分工程的代码 发现里面有很多嵌套关系 因此决定先从基础模块开始 也是为了整个博客内容的流畅性 读者朋友有问题的话 也可以
  • java robot截图报错_robot framework笔记(介绍+基础关键字)

    robot framework库 Builtin 提供了一组通常需要的通用关键字 String 生成 修改和验证字符串的库 Screenshot 提供关键字捕捉桌面截图 XML 生成 修改和验证xml文件的库 DateTime 日期和时间转
  • 腾讯mini项目-【指标监控服务重构】2023-08-13

    今日已办 使用watermill框架替代当前的base runner框架 a 参考官方提供的sarama kafka Pub Sub https github com ThreeDotsLabs watermill kafka 实现kafk
  • node-sass与node版本不匹配问题解决方法

    Node和node sass的版本存在绑定关系 关系对照表如下 如果版本不匹配 比如在node16上面安装node sass 4 x 那么就可能会报以下错误 此时如果没有别的项目受影响 最好是将node的版本降低一下 咨询朋友说最好是降级n
  • Java线程:线程的调度-休眠

    本文转载至 http lavasoft blog 51cto com 62575 221790 Java线程 线程的调度 休眠 Java线程调度是Java多线程的核心 只有良好的调度 才能充分发挥系统的性能 提高程序的执行效率 这里要明确的