SafeListCopy.java Source code

Java tutorial

Introduction

Here is the source code for SafeListCopy.java

Source

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);
    }
}