Threads Java

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class SafeListCopy extends Object {
  public static void printWords(String[] word) {
    System.out.println("word.length=" + word.length);
    for (int i = 0; i < word.length; i++) {
      System.out.println("word[" + i + "]=" + word[i]);
    }
  }
  public static void main(String[] args) {
    List wordList = Collections.synchronizedList(new ArrayList());
    wordList.add("Synchronization");
    wordList.add("is");
    wordList.add("important");
    String[] wordA = (String[]) wordList.toArray(new String[0]);
    printWords(wordA);
    String[] wordB;
    synchronized (wordList) {
      int size = wordList.size();
      wordB = new String[size];
      wordList.toArray(wordB);
    }
    printWords(wordB);
    // Third technique (the 'synchronized' *is* necessary)
    String[] wordC;
    synchronized (wordList) {
      wordC = (String[]) wordList.toArray(new String[wordList.size()]);
    }
    printWords(wordC);
  }
}