教程简介
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并发 – 有用的资源
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
本系列主要是为了对redis的网络模型和集群原理进行学习,我会用golang实现一个reactor网络模型,并实现对redis协议的解析。 系列源码已经上传github https://github.com/HobbyBear/tinyredis/tree/c…