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

有专业做网站优化的吗中国网站建设公司排行榜

有专业做网站优化的吗,中国网站建设公司排行榜,继续访问这个网站,wordpress网站实例在软件设计中,抽象出了23种设计模式,用以解决对象的创建、组合、使用三种场景。在并发编程中,针对线程的操作,也抽象出对应的并发设计模式。 两阶段终止模式- 优雅停止线程避免共享的设计模式- 只读、Copy-on-write、Thread-Spec…

在软件设计中,抽象出了23种设计模式,用以解决对象的创建、组合、使用三种场景。在并发编程中,针对线程的操作,也抽象出对应的并发设计模式。

  • 两阶段终止模式- 优雅停止线程
  • 避免共享的设计模式- 只读、Copy-on-write、Thread-Specific Storage
  • 多线程版本的if模式
  • 多线程分工模式 (Thread-per-Message 、Worker Thread、生产者-消费者模式)

从今天开始我们会开始逐篇讲解这几种并发设计模式。

最简单的方式其实就是调用线程的Stop方法,但是这个方法不推荐使用,原因是会直接将线程杀死。对于业务是不允许的。太粗暴了。

两阶段终止模式

两阶段终止模式其实就是将线程终止的过程分成两个过程。
第一个过程T1向线程T2发送终止指令,第二个过程T2响应终止指令。
在这里插入图片描述
但是本身线程想进入终止状态,那么必然要从运行状态转换,但是这个线程可能是休眠状态,block、wait、time_wait 三种状态。所以需要使用Thread类的interrupt()方法 将线程从休眠状态转换到runnable状态。然后我们设置一个中断位,T2线程检查到需要终止就会直接停止。

一个案例

public class Proxy {private boolean isStart = false;// 对于stop的方法的修改 需要被start()方法 获取到,变量的可见性 private volatile boolean termial = false;private Thread runTask;synchronized void start () {runTask = new Thread(() -> {if (isStart) {return;}isStart = true;while (!Thread.currentThread().isInterrupted() || !termial) {try {System.out.println("send->监控数据>监控平台");TimeUnit.SECONDS.sleep(2);} catch (Exception e) {Thread.currentThread().interrupt();e.printStackTrace();}}isStart = false;System.out.println(Thread.currentThread().getName() + " stop");});runTask.start();}synchronized void stop () {runTask.interrupt();termial = true;}}

终止线程池

对于终止线程池,shutdown()和shutdownNow() 前者其实会将线程池在处理以及阻塞队列中的任务处理完毕,后者会直接拒绝执行任何任务, shutdownNow的返回值是等得队列中未被执行的任务。所以在实际的使用中不推荐直接使用这两个方法。更优的方法其实是

		pool.shutdown();boolean terminated = false;while (!terminated) {pool.awaitTermination(100,TimeUnit.SECONDS);}

两阶段终止模式是一种应用很广泛的并发设计模式,在 Java 语言中使用两阶段终止模式来 优雅地终止线程,需要注意两个关键点: 一个是仅检查终止标志位是不够的,因为线程的状态 可能处于休眠态;另一个是仅检查线程的中断状态也是不够的,因为我们依赖的第三方类库很 可能没有正确处理中断异常, 例如第三方类库在捕获到 Thread.sleep() 方法抛出的中断异常 后,没有重新设置线程的中断状态,那么就会导致线程不能够正常终止。所以我们可以自定义 线程的终止标志位用于终止线程。

小结

好了本篇主要介绍到这里。其实两阶段终止模式主要用以在终止线程的时候,

使用场景

  1. 安全地终止线程,比如释放该释放的资源;
  2. 要确保终止处理逻辑在线程结束之前一定会执行时,可使用该方法;
http://www.sczhlp.com/news/116615/

相关文章:

  • Caused by: java.lang.ClassNotFoundException: org.apache.rocketmq.remoting.common.RemotingUtil
  • 设计师个人作品展示网站wordpress蜘蛛
  • 宜昌网站建设设计网页版微信二维码不能直接识别
  • 网站关键词进前三苏州网站建设制作公司
  • 在线网站制作张家界市建设网站
  • h5商城网站是什么意思全屏网站代码
  • 网站站点规划实例阿里云虚拟机 wordpress
  • 宿州城乡建设局网站俄罗斯局势最新消息
  • 用html5做的网站过程求职网站开发多少钱
  • 律师微网站建设热搜榜上能否吃自热火锅
  • 简洁的网站设计dedecms网站模板下载
  • 鞍山建一个网站大概要多少钱网页搜索快捷键ctrl加什么
  • VAE In JAX【个人记录向】
  • 网站首页分辨率做多大的如何建立自己网站平台
  • 做教育的网站有哪些内容吗老客网免费发布信息
  • 济南比较好的网站开发公司网站建设与开发做什么
  • 专业网站优化seo网页制作素材软件有哪些
  • BLE蓝牙配网双模式实操:STA+SoftAP技术原理与避坑指南
  • 秦皇岛市网站制作公司做胃镜多少钱那好天津津门网站a
  • 上海企业建站推荐腾讯云服务器12元一年
  • 盘锦网站建设多少钱直接可以秒玩的游戏
  • 海口公司做网站地方融资平台
  • dede网站后台有哪些网站做简历比较好
  • 网站是如何建立的做网站要提供营业执照吗
  • 广州越秀区网站建设上海建筑工程股份有限公司
  • 小吃网站建设规划书南京注册公司有什么要求
  • 鞍山人才网站妇女儿童心理咨询网站建设
  • 网站开发大数据舟山建设银行纪念币预约网站
  • 做有奖竞猜网站违法吗acfun网站设计改进
  • 第58天:RCE代码amp;命令执行amp;过滤绕过amp;异或无字符amp;无回显方案amp;黑白盒挖掘