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

大理网站建设沛宣企业注册app下载

大理网站建设沛宣,企业注册app下载,asp.net网站的数据库配置,天津建设网站安全员考试查询JUC基础知识 多线程 管程 Monitor#xff0c;也就是平时所说的锁。Monitor其实是一种同步机制#xff0c;它的义务是保证#xff08;同一时间#xff09;只有一个线程可以访问被保护的数据和代码块#xff0c;JVM中同步是基于进入和退出监视器#xff08;Monitor管程对…JUC基础知识 多线程 管程 Monitor也就是平时所说的锁。Monitor其实是一种同步机制它的义务是保证同一时间只有一个线程可以访问被保护的数据和代码块JVM中同步是基于进入和退出监视器Monitor管程对象来实现每个对象实例都会有一个Monitor对象底层是由C语言来实现。 补Monitor对象并不会随着Java对象的销毁而销毁。 Java对象是在Java堆中创建的而Monitor是与Java对象关联的、由JVM内部管理的机制。Monitor的创建和销毁并不直接对应于Java对象的创建和销毁。更确切地说当Java对象被用作同步锁时JVM会为该对象关联一个Monitor而当该对象不再被用作同步锁或者对象被垃圾回收时与其关联的Monitor可能会被JVM内部释放或重新利用。 ?为什么是同步机制不是互斥机制 - 同步机制与互斥机制并不矛盾同步机制包含了互斥以及协作线程分类 用户线程 工作线程完成业务操作 守护线程 一种特殊的为其它线程服务的线程在后台默默完成一些系统性的任务典型垃圾回收线程。做为一个服务线程当服务对象没有了就会伴随JVM一同结束工作。 怎么设置成守护线程 Thread t new Thread(() - {}); t.setDaemon(); t.start(); /** 必须在start()开始前设置不然会抛异常 */CompletableFuture Future接口 Future是Java5新加的一个接口它提供一种异步并行计算的功能如果主线程需要执行一个很耗时的计算任务我们会就可以通过Future把这个任务放进异步线程中执行主线程继续处理其他任务或者先行结束再通过Future获取计算结果 功能 定义操作异步任务执行的一些方法如获取异步任务的执行结果、取消异步任务的执行、判断任务是否被取消、判断任务执行是否完毕等。 实现类 FutureTask FutureTaskString futureTask new FutureTask(() - Hello); new Thread(futureTask).start(); try {System.out.println(futureTask.get()); } catch (InterruptedException | ExecutionException e) {e.printStackTrace(); }优点 Future线程池异步多线程任务配合能显著提高程序的运行效率。 缺点 get()阻塞 一旦调用get()方法求结果一旦调用不见不散非要等到结果才会离开不管你是否计算完成如果没有计算完成容易程序堵塞。 isDone()轮询 轮询的方式会耗费无谓的cpu资源而且也不见得能及时得到计算结果如果想要异步获取结果通常会以轮询的方式去获取结果尽量不要阻塞。 FutureTaskString futureTask new FutureTask(() - {TimeUnit.SECONDS.sleep(5);return hello world; });new Thread(futureTask).start();while (true) {if (futureTask.isDone()) {try {System.out.println(futureTask.get());return;} catch (InterruptedException | ExecutionException e) {e.printStackTrace();}} else {try {TimeUnit.MILLISECONDS.sleep(500);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(程序正在运行);} }CompletableFuture 对 Future的改进 Future 在实际杂的任务中遇到了众多问题 轮询耗时不能回调怎么更好与线程池组合使用多个任务同步问题 在jdk8中出现了CompletableFuture 类架构 创建 回调 ExecutorService executorService Executors.newFixedThreadPool(3); CompletableFutureInteger completableFuture CompletableFuture.supplyAsync(() - {System.out.println(Thread.currentThread().getName() ---come in);int result ThreadLocalRandom.current().nextInt(10);try {TimeUnit.SECONDS.sleep(1);} catch (InterruptedException e) {e.printStackTrace();}if (result 5) { //模拟产生异常情况int i 10 / 0;}System.out.println(----------1秒钟后出结果 result);return result; }, executorService).whenComplete((v, e) - {if (e null) {System.out.println(计算完成 更新系统 v);} }).exceptionally(e - {e.printStackTrace();System.out.println(异常情况 e.getCause() e.getMessage());return null; }); System.out.println(Thread.currentThread().getName() 先去完成其他任务); executorService.shutdown(); chain链式调用 Accessors(chain true)//开启链式调用常用函数 get() get(long timeout,TimeUnit unit) join – 不抛异常 getNow() 完成返回正常值否则备胎值 complate(T val) 是否打断get()直接返回val thenApply() 计算存在依赖关系串行化且当前异常不进行下一步 handle() 存在依赖串行化异常也进行下一步 thenAccpt() 接受任务结果不返回 thenRun() A执行完执行B,不需要A的结果 applyToEither() 谁快用谁 thenCombine 合并计算结果 线程池 如果没有传入自定义线程池都用默认线程池ForkJoinPool 传入一个线程池如果你执行第一个任务时传入了一个自定义线程池 调用thenRun方法执行第二个任务时则第二个任务和第一个任务时共用同一个线程池 调用thenRunAsync执行第二个任务时则第一个任务使用的是你自定义的线程池第二个任务使用的是ForkJoin线程池 备注可能是线程处理太快系统优化切换原则 直接使用main线程处理thenAccept和thenAcceptAsyncthenApply和thenApplyAsync等之间的区别同理。 如何在Springboot如何在注册线程池呢点击查看
http://www.tj-hxxt.cn/news/139355.html

相关文章:

  • 网站制作的内容什么好网站网页的书签怎么做
  • 如何让别人看到自己做的网站中国广告设计网站
  • 单位网站的作用重庆制作网站培训机构
  • 网站开发网站源码网络营销推广的要点
  • 克隆网站后台做一个网站多长时间
  • 网上做任务挣钱的网站咨询公司来公司做调查
  • 高端建站行业烟台做网站打电话话术
  • 做装修公司网站一起来看在线观看免费
  • 企业门户网站建设咨询桂林人论坛
  • 如何做游戏推广搜索引擎优化seo课程总结
  • 网站子页怎么做兰州做门户网站
  • 电商pc网站建设方案开发公司对设计单位奖惩
  • 调查问卷网站建设河南开封网站建设
  • 浅谈网站建设的目的和意义商务网站建设与管理读后感
  • 北京网站设计公司hlh成都柚米科技15手机壁纸网站大全
  • 创世网站建设公司贪玩游戏原始传奇官网
  • 咸阳网站建设报价企业网站如何做架构图
  • 网站导航设置建设个网站从哪里盈利
  • 企业宽带 做网站企业资质查询平台
  • 网站分站怎么做重庆建设公司
  • 不用编程做APP和响应式网站网站制作的常见问题
  • 网站建设需要多少工种建设银行新加坡分行网站
  • 什么是网站的功能模块杭州pc网站制作公司
  • 怎么样可以做自己的网站个人网站开发软件
  • 手机怎样设计网站建设合肥网站建设公司 招聘
  • 用phpcms v9搭建手机网站后您没有访问该信息的权限!芍药居做网站公司
  • 建行门户网站dw个人网站制作教程
  • 品牌网站建设岗位职责wordpress怎么还原
  • php网站建设模板下载郴州新网交友
  • 教务系统网站开发方法河南省工程造价信息网官网