摘要:
一,在线程中执行任务 a, 串行地执行任务 最简单的策略就是在单个线程中串行地执行各项任务。但串行处理机制通常都无法提供高吞吐率或快速响应性。 b, 显示地为任务创建线程 通过为每个请求创建一个新的线程来提供服务,从而实现更高的响应性。但为每个任务分配一个线程也存在一些缺陷: 1,无限创建线程的不足
阅读全文
posted @ 2017-05-20 09:29
coder为
阅读(702)
推荐(0)
摘要:
一,同步容器 同步容器类包括Vector和Hashtable。这些类实现线程安全的方式是:将它们的状态封装起来,并对每个公有方法都进行同步,使得每次只有一个线程能访问容器本身的状态。 1,同步容器的问题 同步容器类都是线程安全的,但在某些情况下可能需要额外的客户端加锁来保护复合操作。同步容器将所有对
阅读全文
posted @ 2017-05-16 17:33
coder为
阅读(393)
推荐(0)
摘要:
一,设计一个线程安全的类 一个线程安全的类的设计需要包括三个基本要素: 组成对象状态的属性 限制状态属性的不变性 并发访问对象状态的管理策略 同步策略规定了如何将不变性/线程封闭/加锁机制等结合起来以维护线程的安全性,并且规定了哪些变量由哪些锁来保护。 1,收集同步需求 要确保类的线程安全性,就需要
阅读全文
posted @ 2017-05-16 10:40
coder为
阅读(868)
推荐(0)
摘要:
一,为改善可读性和灵活性重构代码 1,从匿名类到Lambda表达式的转换 用Lambda表达式替换
阅读全文
posted @ 2017-05-09 15:36
coder为
阅读(426)
推荐(0)
摘要:
API: java.lang.Object void notifyAll() 解除那些在该对象上调用wait方法的线程的阻塞状态。该方法只能在同步方法或同步块内部调用。如果当前线程不是对象锁的持有者,该方法抛出一个IllegalMonitorStateException异常。 void nofity
阅读全文
posted @ 2017-05-03 18:15
coder为
阅读(579)
推荐(0)
摘要:
synchronization并不仅仅是原子性和确定“临界区”,还有一个重要的方面就是“内存可见性(memory visibility)”。我们不仅想阻止一个线程去修改被另一个线程使用的变量,也想要确保一个线程修改了某个共享值之后其他线程可以看到这些改动。 一,可见性(Visibility) 为了确
阅读全文
posted @ 2017-05-03 09:41
coder为
阅读(877)
推荐(0)
摘要:
一, 什么是线程安全性 在线程安全性的定义中,最核心的概念就是正确性。 a class is thread-safe when it continues to behave correctly when accessed from multiple threads, regardless of th
阅读全文
posted @ 2017-04-27 18:21
coder为
阅读(526)
推荐(0)
摘要:
一 流的概念 流是Java API的新成员,它允许以声明性方式处理数据集合(通过查询语句来表达,而不是临时编写一个实现)。 Java 7 从集合中选出低热量菜肴名称: Java 8 : 如果要多核架构并行执行这段代码,只需要把stream()换成parallelStream(): 二 集合与流的区别
阅读全文
posted @ 2017-04-24 10:01
coder为
阅读(725)
推荐(0)
摘要:
Lambda表达式可以理解为简洁地表示可传递的匿名函数的一种方式:它没有名称,但它有参数列表/函数主体/返回类型,可能还有一个可以抛出的异常列表。 Lambda表达式由参数/箭头和主体组成: 之前的代码形式: Comparator<Apple> byWeight = new Comparator<A
阅读全文
posted @ 2017-04-20 09:52
coder为
阅读(953)
推荐(0)
摘要:
行为参数化是用来处理频繁变更的需求的一种软件开发模式。拿出一个代码块,把它准备好却不去执行它。这个代码块以后可以被程序的其他部分调用,也就是推迟这块代码的执行。 行为参数化:让方法接受多种行为作为参数,并在内部使用,来完成不同的行为。 传递代码,就是将新行为作为参数传递给方法。但在java 8之前实
阅读全文
posted @ 2017-04-19 18:45
coder为
阅读(2192)
推荐(0)