摘要:
我们知道,在Java中设置变量值的操作,除了long和double类型的变量外都是原子操作,也就是说,对于变量值的简单读写操作没有必要进行同步。这在JVM 1.2之前,Java的内存模型实现总是从主存读取变量,是不需要进行特别的注意的。而随着JVM的成熟和优化,现在在多线程环境下volatile关键字的使用变得非常重要。在当前的Java内存模型下,线程可以把变量保存在本地内存(比如机器的寄存器)中,而不是直接在主存中进行读写。这就可能造成一个线程在主存中修改了一个变量的值,而另外一个线程还继续使用它在寄存器中的变量值的拷贝,造成数据的不一致。要解决这个问题,只需要像在本程序中的这样,把该变量声 阅读全文
摘要:
(一)HTablePool介绍 HTablePool是HBase API中的重要类,可以通过HTablePool的getTable(String tableName)方法获得相应的HTable对象实体,用于进行对HBase表的增删改成等操作。一般情况下,客户端通过new 的方式来创建和销毁HTable的操作相对有较大的开销,而是用HTablePool方法创建的HTable则可以在jvm进程的生命周期内循环使用,以降低开销。(二)HTablePool的原理 如果对某表的操作仅执行一次或连续执行的时间较短,则使用new的方法和使用HTablePool的getTable()方法的开销基本无区别,.. 阅读全文