List<JButton> buttons = new ArrayList<Button>();
buttons.add(new JButton....
....

これを別スレッドで
buttons.get(0).setText("asdf");
buttons.get(0).setPreferredSize(new Dimension...

等やる分にはArrayListの同期は必要ないのですよね?
別スレッドでaddやremoveをする場合は同期が必要という解釈でよろしいでしょうか?