アップデートを変数の値を取得するには、スレッドを一時停止 - 私はaref.setSomethingコードスニペットは、Java
public void run(){
aref.setSomething();
//calling the setSomething() with this thread!!
}
からしかし、私の場合に抽出し、How to access a method from another running thread in java
しかし同様のポストに出くわしました( )スレッドAが常にビジーであるため実行されません
良い日、私はコードをJavaのコードを記述して、マップの内容を抽出するのに十分長いスレッドを一時停止させようとしています。 threadメソッドのoperateHostsは、スレッドが起動(実行)メソッドを呼び出すときに呼び出されます。 しかし、私は、私がマップの内容を読んで、別の方法に送信できるようにスレッドを一時停止できるようにしたい。 問題はpauseRunが実行されない方法です。デバッグモードで実行すると、ここで一時停止し、XYZスレッドを待っています。
boolean InOperatationFlag = true;
public void run() {
operateHosts(); }
public synchronized void operateHosts() {
while (InOperatationFlag) {
int i = 0;
for (LRM m : setOfLRMs) {
System.out.println("Operating Host for thread no" + i);
m.runControl();
i++; }
try{ Thread.sleep(2000); }
catch (Exception ex) {
System.out.println ("Busy LRM was interrupted " + ex);
ex.printStackTrace(); }
public void pauseRun() throws InterruptedException {
InOperatationFlag = false; }
public void resumeRun() {
InOperatationFlag = true; }
public List<Map<String, Object>> submitToSchedulerForMigration() throws InterruptedException {
pauseRun();
Set<? extends PowerHost> fakeHostList = new HashSet<PowerHost>();
fakeHostList = mQueue.keySet();
List<Map<String, Object>> migMap = new LinkedList<Map<String, Object>>();
for (PowerHost ph : fakeHostList) {
migMap = this.optimizeAllocation(ph, mQueue.get(ph), exHost); }
resumeRun();
return migMap; }
あなたのご協力をお待ちしております。
Ughh!人々があなたのコードを手助けしたい場合は、コードスタイルにもっと注意を払う必要があります。コードを正しくインデントし、識別子の規則に従って、改行と空白の規則に従ってください。 –