SafeListCopy.java
上传用户:songled
上传日期:2022-07-14
资源大小:94k
文件大小:1k
源码类别:

进程与线程

开发平台:

Java

  1. import java.util.*;
  2. public class SafeListCopy extends Object {
  3. public static void printWords(String[] word) {
  4. System.out.println("word.length=" + word.length);
  5. for ( int i = 0; i < word.length; i++ ) {
  6. System.out.println("word[" + i + "]=" + word[i]);
  7. }
  8. }
  9. public static void main(String[] args) {
  10. // To be safe, only keep a reference to the 
  11. // *synchronized* list so that you are sure that 
  12. // all accesses are controlled.
  13. List wordList = 
  14. Collections.synchronizedList(new ArrayList());
  15. wordList.add("Synchronization");
  16. wordList.add("is");
  17. wordList.add("important");
  18. // First technique (favorite)
  19. String[] wordA = 
  20. (String[]) wordList.toArray(new String[0]);
  21. printWords(wordA);
  22. // Second technique
  23. String[] wordB;
  24. synchronized ( wordList ) {
  25. int size = wordList.size();
  26. wordB = new String[size];
  27. wordList.toArray(wordB);
  28. }
  29. printWords(wordB);
  30. // Third technique (the 'synchronized' *is* necessary)
  31. String[] wordC;
  32. synchronized ( wordList ) {
  33. wordC = (String[]) wordList.toArray(
  34. new String[wordList.size()]);
  35. }
  36. printWords(wordC);
  37. }
  38. }