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

唐山网站关键词优化画网页前端界面的软件

唐山网站关键词优化,画网页前端界面的软件,外贸小网站建设,运营企业网站怎么赚钱目录 1.LockSupport.park():休眠当前线程 2.LockSupport.unpark(线程对象):唤醒某一个指定的线程 3.扩展:LockSupport.parkUntil(long)等待最大时间是一个固定时间 4.LockSupport和Interrupt 5.LockSupport VS wait 相同点:…

目录

1.LockSupport.park():休眠当前线程

2.LockSupport.unpark(线程对象):唤醒某一个指定的线程

3.扩展:LockSupport.parkUntil(long)等待最大时间是一个固定时间

4.LockSupport和Interrupt

5.LockSupport VS wait

相同点:

①二者都能使线程进入休眠状态。

②二者在不传递参数的情况下,都会让线程进入WAITING无限期等待状态。

不同点:

①LockSupport使用时不需要加锁,不需要配合synchronized一起使用;而wait需要配合synchronized一起使用。

②LockSupport不会抛出Interrupt的异常,而wait会。

③LockSupport可以指定某一个线程进行唤醒,而wait和notify不行。

PS:线程休眠4种方式:


有wait和notify是因为sleep只能到点之后再被唤醒,不能主动唤醒。

上述方法的问题:在调用notify时会随机唤醒,无法唤醒指定的某一个线程,不能把握线程唤醒的顺序。

使⽤ LockSupport 也可以使线程休眠和唤醒,它包含两个主要的⽅法↓

注:LockSupport 无需配合 synchronized 使用。

1.LockSupport.park():休眠当前线程

import java.util.concurrent.locks.LockSupport;public class LockSupportDemo1 {public static void main(String[] args) throws InterruptedException {Thread t1 = new Thread(() -> {System.out.println("线程1:开始执行");LockSupport.park();System.out.println("线程1:结束执行");},"线程1");t1.start();}
}

2.LockSupport.unpark(线程对象):唤醒某一个指定的线程

import java.util.concurrent.locks.LockSupport;public class LockSupportDemo1 {public static void main(String[] args) throws InterruptedException {Thread t1 = new Thread(() -> {System.out.println("线程1:开始执行");LockSupport.park();System.out.println("线程1:结束执行");},"线程1");Thread t2 = new Thread(() -> {System.out.println("线程2:开始执行");LockSupport.park();System.out.println("线程2:结束执行");},"线程2");Thread t3 = new Thread(() -> {System.out.println("线程3:开始执行");LockSupport.park();System.out.println("线程3:结束执行");},"线程3");t1.start();t2.start();t3.start();Thread.sleep(1000);System.out.println();LockSupport.unpark(t1); //唤醒线程1开始执行Thread.sleep(1000);LockSupport.unpark(t2); //唤醒线程2开始执行Thread.sleep(1000);LockSupport.unpark(t3); //唤醒线程3开始执行}
}

3.扩展:LockSupport.parkUntil(long)等待最大时间是一个固定时间

import java.time.LocalDateTime;
import java.util.concurrent.locks.LockSupport;public class LockSupportDemo2 {public static void main(String[] args) throws InterruptedException {Thread t1 = new Thread(() -> {System.out.println("线程1:开始执行 |" + LocalDateTime.now());//当前时间 + 超时时间(唤醒时间)LockSupport.parkUntil(System.currentTimeMillis() + 3000);//3000ms代表3s,表示3s之后恢复执行System.out.println("线程1:结束执行 |" + LocalDateTime.now());},"线程1");t1.start();}
}

4.LockSupport和Interrupt

之前的 sleep/TimeUnit/wait 写法都需要加try-catch包裹来接收Interrupt异常,写法不够优雅;而 LockSupport.park/parkUntil在休眠时不需要try-catch包裹,不需要接收 Interrupt 异常。

try {Thread.sleep(1000);
} catch (InterruptedException e) {e.printStackTrace();
}try {TimeUnit.SECONDS.sleep(1);
} catch (InterruptedException e) {e.printStackTrace();
}synchronized (lock){try {lock.wait();} catch (InterruptedException e) {e.printStackTrace();}
}LockSupport.park();
LockSupport.parkUntil(1000 + System.currentTimeMillis());

LockSupport 不会抛出 Interrupt 的异常,但可以监听到 Interrupt 的通知:

import java.util.concurrent.locks.LockSupport;public class ThreadDemo20 {public static void main(String[] args) throws InterruptedException {Thread t1 = new Thread(() -> {Thread currThread = Thread.currentThread();System.out.println("线程中止状态:" + currThread.isInterrupted());LockSupport.park();System.out.println("线程中止状态:" + currThread.isInterrupted());});t1.start();Thread.sleep(1000);System.out.println("中止线程");t1.interrupt();LockSupport.unpark(t1);}
}

5.LockSupport VS wait

相同点:

①二者都能使线程进入休眠状态。

②二者在不传递参数的情况下,都会让线程进入WAITING无限期等待状态。

不同点:

①LockSupport使用时不需要加锁,不需要配合synchronized一起使用;而wait需要配合synchronized一起使用。

②LockSupport不会抛出Interrupt的异常,而wait会。

③LockSupport可以指定某一个线程进行唤醒,而wait和notify不行。

PS:线程休眠4种方式:

  1. sleep(传参设置休眠时间;不可唤醒)
  2. TimeUnit(传参设置休眠时间;不可唤醒)
  3. wait/notify/notifyAll(可传参设置休眠时间,也可不传参无限等待;可以唤醒)
  4. LockSupport.park()/parkUntil(long)/unpark(thread)(parkUntil可传参设置休眠时间,park也可不传参无限等待;unpark传参唤醒指定线程)

http://www.yayakq.cn/news/152179/

相关文章:

  • 网站站内推广邢台网站建设有哪些
  • 清远做网站的有哪些瑞安做网站建设
  • 淘宝做网站退款wordpress汇率插件
  • 长春吉林建设信息网站怎么创建个人视频号
  • 重庆梁平网站制作公司goggle营销型网站效果
  • 政务公开网站建设的亮点和建议临沂建设中专官方网站
  • 如何更换网站新域名wordpress 响应式企业主题
  • 网站建设百度经验怎么开无货源网店赚钱
  • 郑州市经开区建设局网站广告推广平台代理
  • 祥符网站建设电子商务主要学什么适合女生吗
  • 推荐个网站免费的WordPress同步某个表
  • 成都网站建设 常凡云网站配色与布局
  • 电商网站的费用怎么做帐福州网站建设外贸
  • 北海市做网站的公司网站里面的数据库是怎么做的
  • 网站开发是固定资产吗做网站能不能赚钱
  • 自己做电商网站.wordpress 时间轴
  • 做网站推广dw旅游网站怎么做
  • 做网站用什么语言比较简单东莞东城网站建设
  • 网站推广营销策略网站模板的好处
  • 网站地图 用户体验旅行网站建设论文摘要
  • 网站上的图片格式怎么做软件开发公司简介模板免费
  • 有没有做链接的网站吗网站开发员工结构
  • 检查网站是否做网站地图旅游网站建设ppt模板
  • 有哪些做公司网站哈尔滨网站建设推广服务
  • 和印度做外贸的网站宣传展示型网站设计
  • 展示型型网站建设在哪个网站上找超市做生鲜
  • 天津网站排名提升十大网红电商
  • 湖北襄阳住房保障和城市建设局网站线上商城怎么开
  • 中石化工建设宁波分公司网站网站开发工作分解结构的树形图
  • 宿州建设公司网站短视频万能素材库