当我阅读这篇文档时,我正在编写一个特定于应用程序的
Java HBase API包装器:
http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/client/Result.html
它说这个班级不是威胁安全**.
它的确是什么意思不是线程安全的.我基本上是一个C程序员,如果有人说函数strtok()不是线程安全的,我就不会在多线程环境中使用它.像strtok()这样的东西使用静态变量并且通过两个不同的线程调用这个函数并不是一个好主意.
JAVA是否一样?
public String get(String key,String family) { Get get = new Get(key.getBytes()); get.addFamily(family.getBytes()); Result result = null; try { result = _table.get(get); } catch (IOException e) { // Todo Auto-generated catch block e.printstacktrace(); } return ""; }
解决方法
What exactly does it mean by not thread safe.
这意味着如果通过各种线程访问给定的类对象,则在这些线程中调用其方法可能会导致不可预测的结果,因为各种线程之间不需要的交互.这种不可预测结果的基本原因是在各种线程之间共享对象的相同数据.您可以在Wikipedia Article这里查看有关Thread-safety的更多信息.
完成代码后,我发现你在行result = _table.get(get)中使用了成员变量_table; .所以,最有可能的是它不是线程安全的.