04 2013 档案

摘要:关于这个命题,其实在面试题中被问到的几率很大,比如说我在面试ebay的过程中,由一个面试官就问到:"如果一个类的所有变量都是线程安全的,那么这个类是线程安全的吗?"。这个问题的答案会在下面的部分中给出。 在线程安全的程序中,虽然可以将程序的所有状态都保存在公有的静态域中,但与那些将状态封装起来的程序比起来,这些程序的线程安全性更加难以保证,并且在修改时也更难以始终确保其线程安全性。 在设计线程安全类的过程中,需要包含以下三个基本要素:找出构成对象状态的所有变量。找出约束状态变量的不变性条件。建立对象状态的并发访问管理策略。 如果某个对象不是线程安全的,那么可以由多种技术使其 阅读全文
posted @ 2013-04-24 21:05 editice 阅读(451) 评论(0) 推荐(0)
摘要:cache:在默认情况下,如果你需要从hbase中查询数据,在获取结果ResultScanner时,hbase会在你每次调用ResultScanner.next()操作时对返回的每个Row执行一次RPC操作。即使你使用ResultScanner.next(int nbRows)时也只是在客户端循环调用RsultScanner.next()操作,你可以理解为hbase将执行查询请求以迭代器的模式设计,在执行next()操作时才会真正的执行查询操作,而对每个Row都会执行一次RPC操作。 因此显而易见的就会想如果我对多个Row返回查询结果才执行一次RPC调用,那么就会减少实际的通讯开销。这个就.. 阅读全文
posted @ 2013-04-22 16:18 editice 阅读(5970) 评论(0) 推荐(0)
摘要:其实除了上述的表达,我们还需要了解一些其他的方面,同步不仅仅是上面的部分,还需要考虑“可见性”。的问题,也就是常见的对象的共享问题。 这里我们引用了:《java并发编程实战》 http://blog.csdn.net/cutesource/article/details/5780486http://blog.csdn.net/cutesource/article/details/5780740 为了能让开发人员安全正确地在Java存储模型上编程,JVM提供了一个happens-before原则,有人整理得非常好,我摘抄如下:在程序顺序中, 线程中的每一个操作, 发生在当前操作后面将要出... 阅读全文
posted @ 2013-04-21 21:14 editice 阅读(371) 评论(0) 推荐(0)
摘要:可能很多人在谈到java并发可能就会想到thread类,想到run方法,但是其实不是这样的,理解并发需要从本质上去理解,而不是仅仅知道怎么使用多线程,怎么使用同步。首先,一个对象是否是线程安全的,取决于它是否被多个线程访问。这指的是在程序中访问对象的方式,而不是对象要实现的功能。java中的主要的同步机制是关键字synchronized,它提供了一种独占的加锁方式,但是“同步”这个术语还包括volatile类型的变量,显式锁(Explicit lock)以及原子变量。下面采用一系列由浅入深的问答方式来加深理解。 什么叫线程安全? 当多个线程访问某个类的时候,如果这个类始终都能表现出正确... 阅读全文
posted @ 2013-04-17 20:14 editice 阅读(241) 评论(0) 推荐(0)