Обмен данными между двумя потоками

У меня есть ветка, A , в которой есть список. Список содержит несколько объектов. Теперь я хочу разработать механизм, с помощью которого я могу отправить сообщение в поток A .

Поток A выполняется в цикле (он не ждет и не спит). Другой поток, B , отправляет сообщение потоку A , а поток A очищает все свои очереди.

Как я могу отправлять сообщения между потоками?

class A extends Thread {
    List<Object> objs = something; //Init it
    void run() {
        while(true) {
            //Body which works on objects.
            //After receiving an external message, "A" should perform some action, for example, empty objects.
        }
    }
}

РЕДАКТИРОВАТЬ: Могу я сделать это так?

class A extends Thread {
    List<Object> objs = something; //Init it
    Boolean flag = false;

    public void setFlag(boolean value) {
        synchronized(flag) {
            this.flag = value;
        }
    }

    public void getFlag() {
        synchronized(flag) {
            return this.flag;
        }
    }

    void run() {
        while(true) {
            //Body which works on objects.
            //After receiving an external message, A should perform some action, for example, empty objects.
            if (getFlag == true)
                //Empty list
        }
    }
}
23
задан Peter Mortensen 1 November 2011 в 10:50
поделиться