Я делаю приложение для Android, в котором я занимаюсь проблемой производителя. У меня следующий код:Доступ к не статическому методу извне класса в Java (приложение для Android)
package nu.hci.codemenao;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;
public class Resource {
public Queue<String> semaphore = new LinkedList<String>();
public synchronized void addString(String commands) {
semaphore.add(commands);
notify();
}
public synchronized String getString() {
while(semaphore.isEmpty())
try{ wait();}
catch(InterruptedException e){}
return semaphore.remove();
}
}
Как позвонить addString()
и getString()
от других классов? У меня есть еще один класс, который помещается в очередь, а другой, который читается.
Я попытался сделать семафорную очередь и методы статическими, но тогда я не могу использовать notify()
и wait()
(получена ошибка: non static method notify() can not be referenced from static context
).
Если вы будете следовать моему ответу http://stackoverflow.com/a/33202013/913286 вашего дизайн будет намного проще, нужны просто правильные очереди. –
@GilVegliach, yeh, я просто не знаю, как использовать блокировку очереди в контексте моей проблемы – yerassyl
'BlockingQueue q = new LinkedBlockingQueue ()'; вы вставляете строки с 'q.put (" asdf ")' и удаляете их (блокируя) с помощью 'q.take()'. –