当前位置: 首页 > news >正文

政府网站集约化建设报告分析百度帐号个人中心

政府网站集约化建设报告分析,百度帐号个人中心,高清无线视频传输系统,杭州哪家做网站Java 线程的基本控制yield()sleep()join()软件系统在实际运行过程中经常会有多个线程并发执行的情形发生,而且需要在特定时间或者条件下对哪一个线程的运行和停止进行控制,因此Java提供了几种方法对线程进行控制。 相同优先级的线程d的让步(y…

Java 线程的基本控制

      • yield()
      • sleep()
      • join()

软件系统在实际运行过程中经常会有多个线程并发执行的情形发生,而且需要在特定时间或者条件下对哪一个线程的运行和停止进行控制,因此Java提供了几种方法对线程进行控制。

  • 相同优先级的线程d的让步(yield )
  • 线程的休眠(sleep)
  • 线程的挂起(suspend)和恢复(resume)
  • 线程的等待(wait)和通知(notify)

yield()

yield() 方法强制当前运行的线程让出虚拟CPU的使用权,使当前运行 的线程从运行状态过渡到可运行 状态(就绪状态),而不是进入阻塞状态

当时有两种情况调用yield方法不会使让出CPU而是继续执行(既yield不会生效)

  • 当前可运行状态中没有等待运行的线程,
  • 当前可运行状态中没有与调用yield线程相同优先级的线程(yield是相同优先级的线程间的让步)

注意! yield()方法是一个静态方法,可以使用类名或者在线程中直接调用yield方法。但是!!!!不能设置停止多长时间,只能靠线程调度器去控制何时进入下一次运行

ThreadA.java

public class ThreadA extends Thread {TestYield ty;int a = 0;public ThreadA(TestYield ty){this.ty = ty;}@Overridepublic void run() {while (a++<50){ty.changData("ThreadA");//changData()使用了synchronized关键字,只有当changData()方法执行完之后,另一个线程才能执行changData()方法this.yield();}}
}

ThreadB.java

public class ThreadB extends Thread {TestYield ty;int a = 0;public ThreadB(TestYield ty){//线程的名字this.ty = ty;}@Overridepublic void run() {while (a++<50){ty.changData("ThreadB");}}
}

TestYield.java

public class TestYield {private int data;public synchronized void changData(String name){data++;System.out.println("name="+name+"    data"+data);}public static void main(String[] args){TestYield ty = new TestYield();ThreadA ta = new ThreadA(ty);ThreadB tb = new ThreadB(ty);ta.start();tb.start();}
}

sleep()

当前运行的线程让出CPU,休眠一段时间并 进入阻塞状态,当休眠时候到的时候,该线程就会进入可运行状态等到调度器使其运行。

public static void sleep(long millisecnds) throws InterruptedException
//milliseconds 指定线程的睡眠时间(单位是毫秒)
public class SleepTest extends Thread {@Overridepublic void run() {int i = 0;while(i++<10){System.out.println("i="+i);try {sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}}public static void main(String[] args){SleepTest s1 = new SleepTest();s1.start();}
}

在这里插入图片描述
在这里插入图片描述
每隔1秒就会输出一次

注意!!在这两种情况下,调用sleep依旧有效(依旧会让出CPU资源,睡眠一段时间并进入阻塞状态)



join()

连接方法可以使当前运行的线程处于等待状态(阻塞),直到 调用 join() 方法 的线程执行完毕

join方法的三种调用 格式

  • join() :如果当前的线程调用t.join() 方法,则当前线程将等待 t 线程结束后再继续执行
  • join(long millis ):如果当前线程调用t.join(millis )方法,则当前线程将等待 t 线程结束或最多等待,millis毫秒后再继续执行。(既如果 A线程等待millis毫秒之后: 如果 t 线程执行完毕,那么执行A线程继续执行;如果 t 线程依旧没有执行完毕,那么 t 进入就绪状态,让出CPU资源,让A执行)
    • join(long millis ,int nanos):如果当前线程调用t.join(millis )方法,则当前线程将等待 t 线程结束或最多等待,millis毫秒+nanos纳秒 后再继续执行。
 class ThreadB extends Thread{@Overridepublic void run() {System.out.println("running the ThreadB");try {sleep(10000);} catch (InterruptedException e) {e.printStackTrace();}System.out.println("end ThreadB");}}
 class ThreadA extends Thread{ThreadB tb;public ThreadA(ThreadB tb){this.tb = tb;}@Overridepublic void run() {System.out.println("running the ThreadA");try {tb.join();//join使当前的线程处于等待状态(阻塞),直到调用join()方法的线程执行完毕。} catch (InterruptedException e) {e.printStackTrace();}System.out.println("end ThreadA");}}
public class TestJoin {public static void main(String[] args){ThreadB tb = new ThreadB();ThreadA ta = new ThreadA(tb);ta.start();tb.start();}
}

在这里插入图片描述
在这里插入图片描述

http://www.lbrq.cn/news/2509471.html

相关文章:

  • 网站后台怎样推荐图片短视频剪辑培训班速成
  • 网站建设制作 南京公司推广方案设计
  • 怎样做交友网站市场调研报告怎么写
  • 怎么做私服网站网络运营主要做什么工作
  • 怎么建网站做淘宝客成都正规搜索引擎优化
  • 中国建设招聘信息网站北京营销推广网站建设
  • 做长直播的房地产网站小红书如何引流推广
  • wordpress做的视听网站做企业网站哪个平台好
  • 建设银行校招网站入口国际军事新闻
  • 一个空间做2个网站吗网络营销形式
  • seo网站优化培训班百度一下网页搜索
  • 郑州公司建站搭建广州seo关键词优化是什么
  • 怎样通过网盘做电影网站seo免费诊断
  • 网站制作切片目前在哪个平台做推广好
  • 有哪些比较好的做ppt好的网站怎样宣传自己的产品
  • 娄底做网站windows优化大师兑换码
  • python 做下载网站上海今天最新发布会
  • 外贸免费p2p网站建设seo技巧与技术
  • 网站产品图怎么做的网店运营推广中级实训
  • 上海工厂网站建设百度网盘客服在线咨询
  • asp.net网站开发实例十大外贸电商平台
  • 密云建设网站企业培训系统app
  • 源码出售网站怎么做国外搜索引擎排行榜
  • 网站模板首页营销qq官网
  • 深圳做网站可用乐云seo十年百度移动端点赞排名软件
  • qq浏览器直接打开网页seo的流程是怎么样的
  • 靓号网站建设推销广告
  • 软件工程师工作内容厦门seo外包
  • 个人网站备案下载站网络培训机构
  • 网站代码开发软件hb找推网
  • Linux安装ragflow(含一键安装脚本)
  • 基于Flask的智能停车场管理系统开发实践
  • 【Git】Linux-ubuntu 22.04 初步认识 -> 安装 -> 基础操作
  • 标签驱动的可信金融大模型训练全流程-Agentar-Fin-R1工程思路浅尝
  • [STM32][HAL]stm32wbxx 超声波测距模块实现(HY-SRF05)
  • CentOS 9 配置国内 YUM 源