您的位置:首页 > 编程语言

moon java 并发的基础知识  以编程思想的第21章为总体概览及问题

2016-01-26 18:43 671 查看
并发 (线程的可视化)

21.1并发的多面性:“速度”“设计的可管理性”

21.1.1更快的执行:阻塞、 事件驱动的编程、函数型语言、线程机制

21.1.2改进代码的设计:

21.2 基本的线程机制:

21.2.1定义任务: Runnable接口、Run()方法、Thread.yield()、线程调度器、main()线程

21.2.2Thread类: Thread构造器、Thread对象的start()方法、

练习

21.2.3使用Executor:java.util.concurrent包以及包中的执行器、ExecutorService 具有服务生命周期的Executor、

Executor方法有静态动态之分么:、shutdown()方法、FixedThreadPool、CashedThreadPool、

SingleThreadExecutor

21.2.4从任务中产生的返回值:

Callable接口、call()方法、ExecutorService.submit()方法、Future对象、isDone()方法、get()方法

21.2.5休眠: sleep()方法、InterruptedException异常、TimeUnit类、睡眠(阻塞)

练习

21.2.6优先级: 线程的优先级、死锁、getPriority()、setPriority()方法、Thread.toString()方法、

Thread.currentThread()方法、关键字volatile、MAX_PRIORITY、NORM_PRIORITY、MIN_PRIORITY

21.2.7让步: yield()、与sleep()区别

21.2.8后台线程: main()线程性质、后台线程(daemon)、setDaemon()方法、isDaemon()方法、子线程、

练习

21.2.9编码的变体: getName()方法

21.2.10术语:

21.2.11加入一个线程: join()方法、join()方法的中断:interrupt()方法 、 isInterrupt()方法

21.2.12创建有响应的用户界面:

怎样才算是有响应的用户界面

21.2.14捕获异常: try-catch语句块、Thread.UncaughtExceptionHandler接口、

Thread.UncaughExceptionHandler.uncaughtException()方法

21.3共享受资源:

21.3.1不正确的访问资源:

21.3.2解决共享资源竞争:互斥量(mutex)、序列化访问共享资源、上锁、解锁、关键字synchronized、监视器、同步规则、

使用显式的Lock对象、 java.util.concurrent.locks、try—finally 单词翻译capture

21.3.3原子性与易变性: 原子操作、long和double、线程任务的可视化指什么、修改

21.3.4原子类: AtomicInteger、AtomicLong、AtomicReference原子性变量类、

boolean compareAndSet(expectedValue,updateValue)方法提供原子性条件的更新操作

21.3.5临界区: 临界区(critical session)、同步控制块、模块方法、线程安全怎么判别、模板方法

21.3.6在其他对象上同步:

21.3.7线程本地存储: 线程本地存储、java.lang.ThreadLocal类

21.4终结任务: cancel()、iscancel()

21.4.1装饰性花园:

21.4.2在阻塞时终结: 线程状态: 新建、就绪、阻塞、死亡、

进入阻塞状态::

21.4.3中断: Thread类中的interrupt()方法、Executor的shutdownNow()方法、中断的类型

练习

被互斥所阻塞

21.4.4检查中断: interruptException异常、Thread.interrupted()方法

21.5线程之间的协作: 任务之间的握手、Condition对象的await()/signal()方法 、Object的wait()/notify()方法

21.5.1wait()与notifyALl():

练习

21.5.6错失的信号: <Setup condition for T2>

21.5.3生成者与消费者: 使用显式的Lock和Condition对象

21.5.4生产者—消费者与队列:java.util.concurrent.BlockongQueue接口、无届队列LinkedBlockingQueue、ArrayBlockingQueue

练习

吐司BlockingQueue

练习

21.5.5任务间使用管道进行输入/输出

PipedWriterlei/PipedReader类

21.6死锁: 死锁发生的条件:

21.7新类库中的构件: java.util.concurrent

21.7.1CountDownLatch: CountDownLatch对象、countDown()方法、CyclicBarrier、

类库的线程安全 TaskPortion/TaskPortion包含的Random对象、Random.nextInt()是线程安全的其它的

21.7.2CyclicBarrier: 适用于你希望创建一组任务,他们并行的执行工作,然后再进行下一个步骤之前等待,直至所有任务都完成、它使得

所有的并行任务都在栅栏处列队,因此可以一致的向前移动;和join() 方法的区别、和CountDownLatch的区别

栅栏动作

21.7.3 DelayQueue 这是一个无界的BolckingQueue,用于放置Delayed接口对象,Delayed接口、Poll()方法

21.7.4PriorityBlockingQueue:很基础的优先级队列,具有可阻塞的读取操作

21.7.5使用ScheduledExecutor的温度控制器:

ScheduledExecutor、scheduledThreadPoolExector、schedule()方法、scheduleFixedRate()方法、

21.7.6 Semaphore 对象池、正常的锁有哪两种:concurrent.locks/synchronized 、计数信号量

21.7.7Exchanger

21.8仿真

21.8.1银行出纳员仿真

21.8.2饭店仿真

21.8.3分发工作

21.9性能调优:

21.9.1 比较各种互斥技术: synchronized/Lock/Atomic、 模板方式设计模式 翻译Accumulate

21.9.2 免锁容器 CopyOnWriteArrayList CopyOnWriteArraySet、ConcurrenHashMap、ConcurrentLinkedQueue

乐观锁 containerInitializer()/ duration翻译

比较各种Map实现:synchronizedHashMap/ConcurrentHashMap

21.9.3乐观加锁

21.9.4ReadWriteLock

21.10活动对象:           不连接对象、  活动对象:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: