Java|2020年的Java程序员面试三件套:多线程+算法+微服务( 二 )


那么 , 今天就把“多线程”与“设计模式”这两个主题放在一起 , 是不是已经开始有点期待还有点畏惧了呢?但是软件开发就是这么一件有趣的事情——随着我们心中的恐惧与日俱增 , 想要试着挑战的心情也会越来越迫切 。
推荐理由:
编写了300个Java示例程序来实现设计模式 , 掌握这些设计模式 , 可以避免程序发生死锁、节省资源、提高性能等 , 让多线程程序更高效 。 java.util.concurrent包、synchronized关键字、Swing框架、Java内存模型等内容也均有涉及 , 不仅能够了解Java多线程的相关知识 , 还可加深对Java语言的理解;
需要这份《多线程与设计模式》手册的朋友 , 只需转发+关注后私信“666”即可免费获取;
内容简介:
第1章:“Single Threaded Execution模式——能通过这座桥的只有一个人”将介绍多线程编程中最基础的一种设计模式——Single Threaded Execution模式 。 该模式可以确保执行处理的线程只能是一个 , 这样就可以有效防止实例不一致 。 本章还将深入介绍Java语言的synchronized关键字 , 并给出计数信号量java.util.concurrent.Semaphore的示例程序 。
第2章:“Immutable模式——想破坏也破坏不了”将介绍Immutable模式 , 即实例一旦创建完毕 , 其内容便不可更改的模式 。 在该模式下 , 由于实例不会不一致 , 所以无需执行互斥处理 , 程序性能也能提高 。 本章还将讲述Java语言中final的含义 , 并给出collections.synchronizedList及java.util.concurrent.copyonwriteArrayList的示例程序 。
第3章:“Guarded Suspension模式——等我准备好哦”将介绍Guarded Suspension模式 , 即在实例进入目标状态之前 , 防止线程继续执行的模式 。 该模式也可以防止实例不一致 。 通过本章还可以练习Java语言中的wait方法和notifyAll方法的使用 。 本章还将给出阻塞队列java.util.concurrent.LinkedBlockingQueue的示例程序 。
第4章:“Balking模式——不需要就算了”将介绍Balking模式 , 即如果实例未进入目标状态 , 则中断方法执行的模式 。 该模式可防止执行无效的等待和多余的方法 。
第5章:“Producer-Consumer模式——我来做 , 你来用”将介绍Producer-Consumer模式 。 在该模式下 , 多个线程能够协调运行 。 采用该模式时 , 生成数据的线程与使用数据的线程在并发运行时不会互相抢占 。 本章还将给出阻塞队列java.util.concurrent.ArrayBlockingQueue的示例程序 。
第6章:“Read-Write Lock模式——大家一起读没问题 , 但读的时候不要写哦”将介绍Read-Write Lock模式 , 该模式会采用灵活的互斥处理 。 在该模式下 , 写数据的线程只能有一个 , 但读数据的线程可以有很多 。 该模式能够提高程序的整体性能 。 本章还将给出可重入的java.util.concurrent.locks.ReentrantReadWriteLock的示例程序 。
第7章“Thread-Per-Message模式——这项工作就交给你了”将介绍Thread-Per-Message模式 , 即将处理委托给其他线程的模式 。 在该模式下 , 线程可以将任务委托给其他线程 , 自己则直接处理接下来的工作 。 该模式能够提高程序的响应性 。 本章还将介绍Java语言中内部类的使用方法 , 并给出java.util.concurrent包中Executor和Executorservice的示例程序 。
第8章“Worker Thread模式——工作没来就一直等 , 工作来了就干活”将介绍WorkerThread模式 , 即多个线程通过线程池进行等待 , 然后按照顺序接受工作并执行的模式 。 该模式可减少创建线程时的资源消耗 , 还可以通过调节等待线程的个数来控制可用的资源量 。 本章还将介绍AWT及Swing (JFC)的线程处理方法 , 并给出通过java.util.concurrent包来使用线程池的示例程序 。