private void reload() throws IOException {
        
        new Thread() {
            @Override
            public void run() {
                try {
                if (debug)
                    logger.log(Level.DEBUG, "Reloading devices...");

                // Load ADB devices
                deviceMap.clear();
                DefaultListModel model = new DefaultListModel();
                for (Device dev : adbController.getConnectedDevices()) {
                    model.addElement(dev.toString());
                    deviceMap.put(dev, new ImageIcon(this.getClass().getResource("/eu/m4gkbeatz/androidtoolkit/resources/device/status_" + String.valueOf(dev.getState()).toLowerCase() + ".png")));
                }
                jList1.setModel(model);

                // Load fastboot devices.
                model = new DefaultListModel();
                for (String str : adbController.getFastbootController().getConnectedDevices())
                    model.addElement(str);
                jList2.setModel(model);

                jList1.setSelectedIndex(SELECTED_DEVICE);


                if (jList2.getSelectedValue() == null || jList2.getSelectedIndex() == -1 && jList2.getModel().getSize() != 0)
                    jList2.setSelectedIndex(0);
                } catch (IOException ex) {
                    exception = ex;
                }
                interrupt();
            }
        }.start();
        if(exception != null)
            throw exception;
    }