我正在做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,你好,我只是不知道如何在我的問題的上下文中使用Blocking隊列 – yerassyl
'BlockingQueue q = new LinkedBlockingQueue ()';你用'q.put(「asdf」)'插入字符串,並用'q.take()'將它們刪除(阻塞)。 –