Выполнить действие и убить все потоки

394
10 августа 2017, 22:15

Не могу сообразить, как соорудить следующую вещь.

private volatile ComponentEvent ce;
public void go(JFrame thisFrame, String string, ImageIcon icon) {
    thisFrame.addComponentListener(new ComponentAdapter() {
        @Override
        public void componentResized(ComponentEvent e) {
            System.out.println("componentResized");
            ce = e;
            Thread myThread = new Thread(new Runnable() {
                @Override
                public void run() {
                    changePosition(e);
                }
            });
            myThread.start();
        }
        @Override
        public void componentMoved(ComponentEvent e) {
            System.out.println("componentMoved");
            ce = e;
            Thread myThread = new Thread(new Runnable() {
                @Override
                public void run() {
                    changePosition(e);
                }
            });
            myThread.start();
        }
    });
}
private synchronized void changePosition(ComponentEvent e) {
    try {
        Thread.sleep(10);
    } catch (InterruptedException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }
    System.out.println(ce.getComponent().getX() + " " + ce.getComponent().getY());
}

И результат в консоли при componentMoved/componentResized:
componentMoved
componentMoved
componentMoved
186 189
componentMoved
componentMoved
183 186
183 186
183 186
183 186
Можно ли как ни будь сделать что бы после Thread.sleep(10) метод sysout выполнился только 1 раз с текущими реальными данными, а все потоки которые я создал(myThread.start()), кроме того что сейчас юзает changePosition, были убиты?
Короче, мне нужно пересчитывать много чего в зависимости от положения окна и его размеров, не хочу обсчитывать это стопицот раз, если достаточно 1-го.

READ ALSO
Как проиграть собственный рингтон?

Как проиграть собственный рингтон?

У меня есть приложение с чатомКаждый раз, когда в чате приходит сообщение надо проигрывать определённый звук

456
Чтение из папки raw

Чтение из папки raw

У меня есть две ActivityВ обеих есть ListView

416
Как побороть org.openqa.selenium.StaleElementReferenceException

Как побороть org.openqa.selenium.StaleElementReferenceException

Перебираю элементы итератором по css локаторам

396
“Time Since/Ago” metod. android studio, java

“Time Since/Ago” metod. android studio, java

Кто знает, как написать метод, который будет высчитывать сколько времени назад пользователь сделал то, или иное действие, и будет возвращать...

402