Java 6,7,8中的String.intern ―― 多线程访问 - ImportNew



Java 6,7,8中的String.intern ―― 多线程访问 - ImportNew

本文是Java 6,7,8中的String.intern ―― 字符串池的后续,"字符串池"这篇文章介绍了Java 7和8中String.intern()方法的实现以及使用它的优势,鉴于其篇幅已经很长,所以我写了本文来介绍多线程访问String.intern时的性能特征。

测试程序将从多个线程调用String.intern()。它们将模拟大多数现代服务器应用的行为(比如特定的网络爬虫)。为测试高竞争的场景,这些程序将在新工作站运行,配置是Intel Xeon E5-2650 CPU (8物理16虚拟内核@ 2 Ghz),128 Gb RAM。为利用所有的物理内核我们将创建8个线程。

四个测试程序如下:

  1. 参照程序――前一篇文章中的testLongLoop方法单线程调用String.intern(),用来展示没有任何竞争时运行速度。
  2. 8个线程调用不同字符串的String.intern()方法,该interned字符串用每个线程的线程号作为前缀。该测试展示了String.intern()的同步开销。理论上这是最坏的情况:一个实际应用所做的唯一事情就是多个线程都循环调用String.intern(),这样的情况几乎不可能出现。
  3. 开始时启动第一个线程interning字符串集合。2秒延迟后启动第二个线程interning相同的字符串集合。我们希望对于第一个线程以下的假设为true:str.intern()==str;第二个线程str.intern()!=str为true。这将证明不存在线程本地的JVM字符串池。
  4. 所有8个线程intern相同字符串集合。这种情况更加接近真实的情形――对于JVM字符串池添加和查询字符串的混合操作。但是,如此高的JVM字符串池读竞争也很少发生。


Read full article from Java 6,7,8中的String.intern ―― 多线程访问 - ImportNew


No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts