教程简介

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曾经能够满足大部分需要。

教程目录

  • Java并发教程
  • Java并发 - 概述
  • Java并发 - 环境设置
  • Java并发 - 次要操作
  • 深刻沟通
  • Java并发 - 同步
  • Java并发 - 死锁
  • Java并发 - ThreadLocal类
  • ThreadLocalRandom类
  • Java并发 - 锁接口
  • Java并发 - ReadWriteLock接口
  • Java并发 - 条件接口
  • Java并发 - AtomicInteger类
  • Java并发 - AtomicLong类
  • Java Concurrency - AtomicBoolean类
  • Java并发 - AtomicReference类
  • Java并发 - AtomicIntegerArray类
  • Java Concurrency - AtomicLongArray类
  • AtomicReferenceArray类
  • Java并发 - Executor Interface
  • ExecutorService接口
  • ScheduledExecutorService接口
  • newFixedThreadPool办法
  • newCachedThreadPool办法
  • newScheduledThreadPool办法
  • newSingleThreadExecutor办法
  • ThreadPoolExecutor类
  • ScheduledThreadPoolExecutor类
  • Java并发 - Futures和Callables
  • Java Concurrency - Fork-Join框架
  • Java并发 - BlockingQueue接口
  • Java并发 - ConcurrentMap接口
  • ConcurrentNavigableMap接口
  • Java并发 - 有用的资源