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

怎么做win10原版系统下载网站阿里数据

怎么做win10原版系统下载网站,阿里数据,怎么 给自己的网站做优化呢,35互联做网站多少钱线程之间通信,可以用wait和notify来实现。 (一)对wait的理解 wait是object的一个方法,表示是当前执行代码的线程进行等待,且会释放当前的锁,满足一定条件时被唤醒,然后重新尝试获取锁。这样说…

线程之间通信,可以用wait和notify来实现。

(一)对wait的理解

wait是object的一个方法,表示是当前执行代码的线程进行等待,且会释放当前的锁,满足一定条件时被唤醒,然后重新尝试获取锁。这样说明,必须先持有锁,才能执行wait语句,所以wait一般是用在synchronized代码块中。

wait如果需要结束等待,可以通过其他线程调用该对象的notify方法,也可以在wait时设置等待超时时间,或者通过其他线程调用等待线程的interrupt方法,导致wait抛出interruptedException异常

(二)对notify的理解

notify是唤醒等待的线程,notify用来唤醒那些等待当前对象持有的锁的其他线程。如果只需要唤醒1个等待的线程,直接用notify即可。如果需要从多个等待的线程中,随机唤醒1个,则需要用notifyAll,同样的notify也需要在synchronized同步代码块中使用到

(三)下面我们通过一个例子来说明wait和notify的使用,并讲述线程间是如何通信的。这个例子的代码如下,这个例子实现了用多线程轮流按序来打印奇数和偶数。

package com.company;public class JishuAndOuShuTest {public static void main(String[] args) {Data data = new Data();//线程数量int THREAD_COUNT = 3;Thread[] threadJiShuArray = new Thread[THREAD_COUNT];Thread[] threadOuShuArray = new Thread[THREAD_COUNT];//初始化奇数线程和偶数线程for (int i = 0; i < THREAD_COUNT; i++) {//奇数打印线程数组threadJiShuArray[i] = new Thread(() -> {while (data.getCount() <= 100) {data.printJiShu();}}, "奇数线程" + i);//偶数打印线程数组threadOuShuArray[i] = new Thread(() -> {while (data.getCount() <= 100) {data.printOuShu();}}, "偶数线程" + i);}//启动奇数线程和偶数线程for (int i = 0; i < THREAD_COUNT; i++) {threadJiShuArray[i].start();threadOuShuArray[i].start();}}
}class Data {/*** 需要打印的数据*/private int count = 1;public synchronized int getCount() {return count;}/*** 打印奇数*/public synchronized void printJiShu() {if (count % 2 == 1) {System.out.println(Thread.currentThread().getName() + "打印" + count);count++;this.notifyAll();} else {try {this.wait();} catch (InterruptedException e) {e.printStackTrace();}}}/*** 打印偶数*/public synchronized void printOuShu() {if (count % 2 == 0) {System.out.println(Thread.currentThread().getName() + "打印" + count);count++;this.notifyAll();} else {try {this.wait();} catch (InterruptedException e) {e.printStackTrace();}}}
}

运行结果如下:

奇数线程0打印1
偶数线程0打印2
奇数线程0打印3
偶数线程0打印4
奇数线程0打印5
偶数线程0打印6
奇数线程1打印7
偶数线程0打印8
奇数线程0打印9
偶数线程1打印10
奇数线程1打印11
偶数线程0打印12
奇数线程2打印13
偶数线程1打印14
奇数线程1打印15
偶数线程2打印16
奇数线程2打印17
偶数线程1打印18
奇数线程1打印19
偶数线程2打印20
奇数线程2打印21
偶数线程1打印22
奇数线程1打印23
偶数线程2打印24
奇数线程2打印25
偶数线程1打印26
奇数线程1打印27
偶数线程2打印28
奇数线程2打印29
偶数线程1打印30
奇数线程1打印31
偶数线程2打印32
奇数线程2打印33
偶数线程1打印34
奇数线程1打印35
偶数线程2打印36
奇数线程2打印37
偶数线程1打印38
奇数线程1打印39
偶数线程2打印40
奇数线程2打印41
偶数线程1打印42
奇数线程1打印43
偶数线程2打印44
奇数线程2打印45
偶数线程1打印46
奇数线程1打印47
偶数线程2打印48
奇数线程2打印49
偶数线程1打印50
奇数线程1打印51
偶数线程2打印52
奇数线程2打印53
偶数线程1打印54
奇数线程0打印55
偶数线程2打印56
奇数线程1打印57
偶数线程1打印58
奇数线程0打印59
偶数线程2打印60
奇数线程1打印61
偶数线程1打印62
奇数线程0打印63
偶数线程2打印64
奇数线程1打印65
偶数线程1打印66
奇数线程0打印67
偶数线程2打印68
奇数线程1打印69
偶数线程1打印70
奇数线程0打印71
偶数线程2打印72
奇数线程1打印73
偶数线程1打印74
奇数线程0打印75
偶数线程2打印76
奇数线程1打印77
偶数线程1打印78
奇数线程0打印79
偶数线程2打印80
奇数线程1打印81
偶数线程1打印82
奇数线程0打印83
偶数线程2打印84
奇数线程1打印85
偶数线程1打印86
奇数线程0打印87
偶数线程2打印88
奇数线程1打印89
偶数线程1打印90
奇数线程0打印91
偶数线程2打印92
奇数线程1打印93
偶数线程1打印94
奇数线程0打印95
偶数线程2打印96
奇数线程1打印97
偶数线程1打印98
奇数线程0打印99
偶数线程2打印100
Disconnected from the target VM, address: '127.0.0.1:61821', transport: 'socket'Process finished with exit code 0

在上面代码中,我们能看到wait和notifyAll是用在synchronized同步方法中,我们设置了3个奇数打印线程和3个偶数打印线程,来轮流交替打印1-100之间的奇数和偶数。

代码运行流程如下:

首先会判断当前数是否小于100,如果小于100,则奇数线程和偶数线程都会开始运行。当奇数线程运行时,在printJiShu同步方法中,会判断当前数据是否为奇数,如果是奇数,则会打印出来,并且再自增1,因为数据就变成了偶数,然后当前线程就通过notify唤醒其他线程,然后此时数据还是小于100,奇数线程会再次执行while语句中的代码块,因为当前数据是偶数了,会走else分支,然后当前线程通过wait方法,进入等待状态。而偶数线程的执行过程也类似,当判断当前数字小于100,偶数线程会开始运行,然后判断当前数字是否为偶数,如果是偶数,则会打印出来,并执行自增1的操作,然后又会唤醒其他出于wait的线程。此时可能唤醒奇数线程,如果奇数线程被唤醒,因为次数数字又变成了奇数,然后又会执行奇数打印,然后再自增1,之后再进行唤醒其他线程,如此循环。直至打印的数字变成100,然后跳出while循环,从而线程执行结束。

http://www.dtcms.com/wzjs/469991.html

相关文章:

  • 做服装哪个网站图片多哪家建设公司网站
  • 做网站备案需要什么特殊材料长沙seo外包服务
  • 建立网站一般会遇到什么问题营销的方法手段有哪些
  • 厦门seo排名优化公司优化关键词排名外包
  • 深圳网站建设的黄页引流推广
  • 广东建设企业网站哪家好搜索指数在线查询
  • 服务关系型网站怎么做百度百度地图
  • 负责公司网站建设的岗位叫什么手机上怎么制作网页
  • 怎样优化网站排名靠前网站测试报告
  • 防录屏网站怎么做谷歌排名网站优化
  • 日照高端网站建设公司产品推广文案
  • 外贸企业网站模版旅行网站排名前十名
  • 网站怎样做能排名靠前潍坊网站关键词推广
  • 关于做网站的笑话电商培训
  • 哪个网站做电子请帖好营销推广公司案例
  • 河东做网站网络游戏推广怎么做
  • 文字网站居中东莞外贸优化公司
  • 全国特种作业人员证查询seo推广的网站和平台有哪些
  • 网站建设英文翻译网站推广计划方法
  • 网易博客 wordpress宁波网络推广seo软件
  • 做网站编辑累吗整合营销传播的方法包括
  • 南海大良网站建设螺蛳粉营销策划方案
  • 网站后台如何上传附件做电商需要学哪些基础
  • 甘肃网站建设项目网络营销的方法是什么
  • 营销型网站建设 深圳信科产品推广计划怎么写
  • 网站建设的网络公短视频seo营销系统
  • 辅助软件定制站内优化怎么做
  • soho设计网站潍坊网站建设公司
  • 做网站要具备些什么条件百度云盘网页登录入口
  • 大朗网站仿做销售的技巧与口才