摘要:一:并发编程面临的挑战 (1)上下文切换问题 (2)死锁问题 (3)受限于硬件和软件资源的问题 &&注意点:并发编程的累加操作不超过百万次,多线程的执行速度要比单线程慢。因为线程有创建和上下文切换的开销。 二:如何减少上下文切换? (1)无锁并发编程。 >多线程竞争锁时,会引起上下文切换,所以多线程
阅读全文
摘要:转载:http://www.ibm.com/developerworks/cn/java/j-jtp06197.html Java™ 语言包含两种内在的同步机制:同步块(或方法)和 volatile 变量。这两种机制的提出都是为了实现代码线程的安全性。其中 Volatile 变量的同步性较差(但有时
阅读全文
摘要:原文出自:http://www.infoq.com/cn/articles/thread-pool-algorithm-realization 1. 前言 在阅读研究线程池的源码之前,一直感觉线程池是一个框架中最高深的技术。研究后才发现,线程池的实现是如此精巧。本文从技术角度分析了线程池的本质 原理
阅读全文
摘要:[一]线程池存在的价值: ==>多线程技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力。 ==>假设一个服务器完成一项任务所需时间为:T1 创建线程时间,T2 在线程中执行任务的时间,T3 销毁线程时间。 ==>如果:T1 + T3 远大于 T
阅读全文
摘要:1.对象锁钥匙只能有一把才能互斥,才能保证共享变量的唯一性(一个对象一个wait set室) 2.在同步静态方法上的锁,和 实例方法上的锁,默认不是同样的,如果同步需要制定两把锁一样(同步静态方法的锁为当前类的对象,该实例的锁)。 3.关于同一个类的方法上的锁,来自于调用该方法的对象,如果调用该方...
阅读全文
摘要:public static enum Thread.Stateextends Enum线程状态。线程可以处于下列状态之一: 1.NEW至今尚未启动的线程的状态。2.RUNNABLE可运行线程的线程状态。处于可运行状态的某一线程正在 Java 虚拟机中运行,但它可能正在等待操作系统中的其他资源,比如处...
阅读全文
摘要:Active Object[接收异步消息的对象]一:Active Object的参与者--->客户端线程(发起某种操作请求处理)--->代理角色(工头)--->实际执行者(工人)--->主动对象接口(工人和工头)--->生产端线程(加工产品的线程)--->存放生产请求的队列(存放请求的队列)--->...
阅读全文
摘要:Thread-Specific-Storage[线程保管箱]一:Thread-Specific Storage的参与者--->记录日志的线程(ClientThread)--->负责获取不同线程记录日志(Log)--->负责将日志写入文件的类(TsLog) 二:Thread-Specific Stor...
阅读全文
摘要:用在多线程,同步变量。 线程为了提高效率,将某成员变量(如A)拷贝了一份(如B),线程中对A的访问其实访问的是B。只在某些动作时才进行A和B的同步。因此存在A和B不一致 的情况。volatile就是用来避免这种情况的。volatile告诉jvm, 它所修饰的变量不保留拷贝,直接访问主内存中的(也就是...
阅读全文
摘要:Two-phapse-Termination[A终止B线程]一:Two-phapse-Termination的参与者--->A线程--->B线程 二:Two-phapse-Termination模式什么时候使用--->当A线程需要B线程终止时三:Two-phapse-Termination思考 --...
阅读全文
摘要:Future pattern[订单取货模式]一:Future pattern的参与者--->Client(客户需求)--->Host(蛋糕门店)--->Data(票据和蛋糕的接口)--->Future(蛋糕票据)--->ReaData(制作蛋糕过程) 二:Future pattern模式什么时候使用...
阅读全文
摘要:Worker pattern[工作模式]一:Worker pattern的参与者--->Client(委托人线程)--->Channel(通道,里边有,存放请求的队列)--->Request(工作内容的包装)--->Worker(工人线程) 二:Worker pattern模式什么时候使用--->类...
阅读全文
摘要:Thread-Per-Message【这个工作交给你模式】一:Thread-Per-Message的参与者--->Client(委托人)--->host(中介开线程)--->hepler(真正工作的工人) 二:Thread-Per-Message模式什么时候使用--->提升响应时间,降低延迟时间--...
阅读全文
摘要:Read-Write Lock Pattern【读写】一:Read-Write Lock Pattern的参与者--->读写锁--->数据(共享资源)--->读线程--->写线程 二Read-Write Lock Pattern模式什么时候使用--->* 为了多线线程环境下保护数据安全,我们必须避免...
阅读全文
摘要:Producer-Consumer【生产消费者模式】一:Producer-Consumer pattern的参与者--->产品(蛋糕)--->通道(传递蛋糕的桌子)--->生产者线程(制造蛋糕的线程)--->消费者线程(吃掉蛋糕的线程) 二:Producer-Consumer pattern模式什么...
阅读全文
摘要:Balking【返回模式】timed【超时模式】一:balking pattern的参与者--->GuardedObject(被警戒的对象)--->该模式的角色:模拟修改警戒对象的线程,当警戒条件达到执行具体操作的线程,参与者(被警戒的参与者) 二:balking pattern模式什么时候使用--...
阅读全文
摘要:Guarded Suspension【生产消费者模式】一:guarded suspension的参与者--->guardedObject(被防卫)参与者 1.1该参与者拥有一个被防卫的方法(getRequest),如果警戒条件达成,则执行。警戒条件不达成,则线程进入wait set 1.2该参与者还...
阅读全文
摘要:Immutable pattern【坚不可摧模式】一:immutable pattern的参与者--->immutable(不变的)参与者 1.1:immutable参与者是一个字段的值都无法更改的类。 1.2:immutable也没有任何用来更改字段值的方法。 1.3:immutable参与者方法...
阅读全文
摘要:Single Threaded Execution Pattern【独木桥模式】一:single threaded execution pattern的参与者--->SharedResource(共享资源)二:single threaded execution pattern模式什么时候使用--->...
阅读全文
摘要:多线程程序的评量标准--->安全性【不损坏对象】 (1)不损坏对象是一种比喻手法,就是数据的一致性。比如银行的扣款操作,并发扣款,账户不会出现负数的余额。--->生存性【进行必要的处理】 (1)指也许不是现在,但一定会进行的必要处理。好比异常处理机制。在出现多线死锁等情况下的必要处理。--->复用性...
阅读全文