【资料图】
Java并发入门教程 - 从简单的步骤了解Java并发,从基本到高级概念,包括概述,环境设置,主要操作,线程通信,同步,死锁,ThreadLocal,ThreadLocalRandom,Lock,ReadWriteLock,Condition,AtomicInteger, AtomicLong,AtomicBoolean,AtomicReference,AtomicIntegerArray,AtomicLongArray,AtomicReferenceArray,Executor,ExecutorService,ScheduledExecutorService,newFixedThreadPool,newCachedThreadPool,newScheduledThreadPool,newSingleThreadExecutor,ThreadPoolExecutor,ScheduledThreadPoolExecutor,Futures and Callables,Fork-Join框架,BlockingQueue,ConcurrentMap,ConcurrentNavigableMap。
1.充分利用多CPU的能力,提高系统吞吐量:在蒸煮(任务1)的过程中,同时可以炒菜(任务2)。当然你的煤气灶是单灶就没法了。。。即使在单CPU的机器上,多线程也可能提高程序的吞吐量,假如某个操作被阻塞(同步I/O操作),后续的逻辑不得不等待其完成。如果将其分开,放入不同的线程中,则在I/O上被阻塞的线程不会影响另一个线程被调度执行。比如你等烧水的时间可以刷朋友圈。 这样做的前提是,程序首先是可以被分开,另一个线程的执行并不依赖I/O操作的结果。
2.简化建模:你有三个任务要处理,改BUG,给老板写报告,关注股市行情等。当你正在绞尽脑汁地改bug,老板忽然发消息让你尽快交报告,还同时高频观察股价以便出手解套。有时候你要兼顾几个任务,常常让人倍感疲惫。程序也一样,有很多task要处理,如何以优雅的方式进行是一个设计问题。JAVA允许将复杂应用分解为不同的任务,每个任务分配给独立的线程运行。从而使编程逻辑清晰。很多框架如Servlet,RMI都是利用此模型开发,框架来管理请求,创建线程,平衡负载,分发(dispatch)请求给相应的业务处理组件。屏蔽了底层的细节,开发人员只需要关注业务逻辑。
3.提高用户界面响应:用Eclipse IDE都知道,如果触发一个长时间的任务(编译工程,搜索文件,更新等),界面依然可以接受用户的其他操作。对于长时间的任务,会放入单独的线程里面完成,从而不影响Event Thread处理用户别的很快完成的请求。
4.异步事件处理的简单化: Java NIO提供了一种非阻塞IO机制,在超大量请求来时,可能会触到多线程的性能瓶颈,通过NIO实现单线程内的异步IO,从而减少线程的创建数量,并且不阻塞其他逻辑。但是NIO相对比较复杂也容易出错。而通过简单的多线程,同步IO已经可以满足大部分需求。
标签:
3月16日,盛和资源(600392)副总经理毛韶春、黄厚兵,财务总监夏兰田,董秘郭晓雷,通过上交所集中竞价交...
2022年3月15日,这是继1983年以来的第40个国际消费者权益日。中消协组织围绕共促消费公平消费维权年主题...
首批金控牌照的归属出炉,两家公司拿到许可证。3月17日,央行发布公告称,已批准中国中信金融控股有限公...
时隔半月之久,西宁市城北区逐步推动复工复产,往日的生机活力被渐渐寻回,牛肉面红油飘香、包子铺炊烟...
音乐是我生活的一部分,是我的梦想,也是我的事业。英国音乐人亚当(Adam)告诉记者,在中国的十几年里,...
Copyright © 2015-2022 华东舞蹈网版权所有 备案号:京ICP备2022016840号-41 联系邮箱:2 913 236 @qq.com