package SwingThreadTest; import java.util.Random; import javax.swing.JComboBox; /** * Acest Class Runnable modifica lista combo, random adaugind numere de la 0. * Acasta poate duce la greseala, deoarece metodele din combo nu sunt sincronizate * si la acelasi combo se adreseaza si thread-ul de lucru si threadul de conducere a evenimentelor. * @author Dan * */ public class BadWorkerRunnable implements Runnable { public BadWorkerRunnable(JComboBox<Integer> acombo) { combo = acombo; generator = new Random(); } public void run() { try { while(true) { combo.showPopup(); int i = Math.abs(generator.nextInt()); if(i%2 == 0) { combo.insertItemAt(new Integer(i), 0); } else if(combo.getItemCount() > 0) { combo.removeItemAt(i % combo.getItemCount()); } Thread.sleep(1); } }catch(InterruptedException e) {} } private JComboBox<Integer> combo; private Random generator; }