教程简介

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并发 – 有用的资源