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

做网站是如果盈利的卓讯企业名录搜索软件

做网站是如果盈利的,卓讯企业名录搜索软件,黄陂区建设局网站,crm软件文章目录 一、线程间通信1.1 为什么要处理线程间通信#xff1f;1.2 什么是等待唤醒机制#xff1f; 二、等待唤醒机制使用2.1 等待唤醒机制用到的方法2.1.1 wait2.1.2 notify 2.2 线程通信代码实践2.2.1 重要说明2.2.2 代码 一、线程间通信 1.1 为什么要处理线程间通信1.2 什么是等待唤醒机制 二、等待唤醒机制使用2.1 等待唤醒机制用到的方法2.1.1 wait2.1.2 notify 2.2 线程通信代码实践2.2.1 重要说明2.2.2 代码 一、线程间通信 1.1 为什么要处理线程间通信 在默认情况下cpu是默认切换线程来执行的当我们需要多个线程共同来完成一个任务希望他们按照一定的规律执行那么就需要他们进行通信协调以达到我们的目的其次对于共享变量的访问我们通常加上synchronized,存在锁的竞争我们也可以使用等待唤醒机制协调线程对变量的访问保证数据的一致性 1.2 什么是等待唤醒机制 说到线程我们常提到线程之间的竞争如多线程下锁的竞争。好比在公司里你和同事在晋升时的竞争但是多数情况下还是你们合作共同完成一些任务。也就是一个线程进行了一定操作后进入等待状态waiting等待其他线程完成任务后将他唤醒(notify)。还有就是当需要等待多个线程时可以使用notifyAll()将等待中的线程全部唤醒 二、等待唤醒机制使用 2.1 等待唤醒机制用到的方法 2.1.1 wait wait() 使当前线程进入等待状态直到被其他线程使用 notify() 或 notifyAll() 唤醒无限期等待直到被唤醒。使用场景: 当线程需要等待某个条件变化时使用无需考虑超时。 public final void wait() throws InterruptedException {wait(0L);}wait(long timeoutMillis)本质上调用的还是这个native 方法 public final native void wait(long timeoutMillis);wait(long timeoutMillis, int nanos) 可以被其他线程调用 notify() 或 notifyAll() 来唤醒也可以在超时后自动唤醒。 public final void wait(long timeoutMillis, int nanos) throws InterruptedException {if (timeoutMillis 0) {throw new IllegalArgumentException(timeoutMillis value is negative);}if (nanos 0 || nanos 999999) {throw new IllegalArgumentException(nanosecond timeout value out of range);}if (nanos 0 timeoutMillis Long.MAX_VALUE) {timeoutMillis;}wait(timeoutMillis);}2.1.2 notify notify 是 Object 类的方法任何对象都可以调用它。notify 方法用于唤醒一个在该对象的监视器上等待的线程。notify() 适用于只需要唤醒一个等待线程的情况,如果有多个线程等待随机唤醒一个 public final native void notify();notifyAll() 唤醒对象监视器上所有等待的线程 public final native void notifyAll();2.2 线程通信代码实践 2.2.1 重要说明 等待和通知唤醒必须放在同步代码块 是为了确保线程在进入等待状态和被唤醒时对共享资源的访问是受控和一致的。这种机制保证了线程间的协调和通信是安全的避免了竞争条件和数据不一致的问题。同步块保证了在任意时刻只有一个线程可以执行同步代码块中的代码从而确保了线程间通信的正确性和一致性。 举个例子张三、李四、王五共同完成一个任务要求张三先做再到李四、最后王五那么三个人就是三个线程一个人在做任务的时候其他人是不能动的。张三做完了把执行权交给李四并通知李四李四执行完了通知王五。调用wait那么当前线程也就释放了锁即交出执行权线程进入WAITING 状态wait 和 notify 必须由同一个锁对象调用。一个锁对象可以唤醒 由同一个锁对象调用wait 后的线程wait 和 notify 是属于 Object 类的锁对象可以是任意对象其他类默认都是继承了Object类的 2.2.2 代码 客人来了张三洗菜、李四切菜、王五炒菜 public class Demo10 {private static final Object lock new Object(); // 锁对象private static boolean vegetablesWashed false; // 是否已经洗菜完成private static boolean vegetablesCut false; // 是否已经切菜完成public static void main(String[] args) {new Thread(new Runnable() {Overridepublic void run() {synchronized (lock){while (!vegetablesCut){try {System.out.println(王五等待李四切菜...);lock.wait(); // 李四没有切完菜继续等} catch (InterruptedException e) {Thread.currentThread().interrupt();}}System.out.println(》》》》王五开始炒菜《《《《);try {Thread.sleep(1200); // 模拟炒菜过程System.out.println(》》》王五炒菜完成《《《);lock.notifyAll();} catch (InterruptedException e) {e.printStackTrace();}}}},王五线程).start();new Thread(new Runnable() {Overridepublic void run() {synchronized (lock){while (!vegetablesWashed){try {System.out.println(李四等待张三洗菜...);lock.wait(); // 张三没有切完菜继续等} catch (InterruptedException e) {Thread.currentThread().interrupt();}}System.out.println(李四开始切菜);try {Thread.sleep(1600); // 模拟切菜过程vegetablesCut true;System.out.println(李四切完菜了);lock.notifyAll(); // 通知王五炒菜} catch (InterruptedException e) {Thread.currentThread().interrupt();}}}},李四线程).start();new Thread(new Runnable() {Overridepublic void run() {synchronized (lock){System.out.println(----张三开始洗菜----);try {Thread.sleep(1500); // 模拟洗菜过程vegetablesWashed true;System.out.println(---张三洗完菜了---);lock.notifyAll();} catch (InterruptedException e) {e.printStackTrace();}}}},张三线程).start();} } 王五等待李四切菜... 李四等待张三洗菜... ----张三开始洗菜---- ---张三洗完菜了--- 王五等待李四切菜... 李四开始切菜 李四切完菜了 》》》》王五开始炒菜《《《《 》》》王五炒菜完成《《《分析上一个人未完成那么下一个人就继续等待。一个人完成了要通知所有人每个人根据自己的顺序接到通知后看是否要做不做任务就继续等待。保证了张三先洗完菜李四再开始切菜李四切完菜王五再炒菜的顺序
http://www.dnsts.com.cn/news/270818.html

相关文章:

  • 专业网站推广的公司哪家好哪里找免费网站
  • 网站突然不能访问南阳优化网站排名
  • 电商网站话费充值怎么做网络平台怎么建
  • 高端旅游网站制作网站设计所遵循的原则
  • 山西建设部网站查询微信公众号上发布wordpress
  • 临海门户网站住房和城乡建设规划局中国保密在线培训网站
  • 电子商务网站开发与管理实验报告设计专业
  • 做网站的备案太原自学网站建设
  • 门户网站建设经验总结报告做英文网站费用多少
  • 小网站推广模板网站合同
  • 建设厅网站上企业登录app下载入口
  • 宁波网站建设建站系统站长统计app软件
  • 织梦网站搬家教程工作室网站需要备案吗
  • 做零售外贸网站有哪些wordpress移动端悬浮导航
  • 购物网站排名2016食品包装设计特点
  • 有域名自己做网站吗建设网站比较好的公司吗
  • 万荣做网站app制作怎样可以快速
  • 男的女的做那个视频网站企业注册登记查询
  • 凯里网站建设go007wordpress wp query
  • 如何让网站被百度快速收录百度官网认证申请
  • 做网站什么价位网站管理员功能
  • 如何加快门户网站建设方案阐述网站建设的步骤过程
  • 建立免费网站做网站怎么挣钱
  • 网站logo图标网站内容建设要求 age06
  • 网站运营策划书重庆网站建设 渝icp
  • 做付费网站企业网站建设600元
  • 企业网站建设基本步骤能用的免费proxy网页
  • 江西南昌网站建设哪家公司好打开百度网站首页
  • 德国设计网站大全阿里云服务器如何做两个网站
  • 自己编写网站网站建设一般多少钱新闻