0

スレッドを開始できない理由がわかりません。どうすればよいですか?

    scheduleTaskExecutor = Executors.newScheduledThreadPool(1);
        scheduleTaskExecutor.scheduleAtFixedRate(runUpdatePreOrders, 0,
                timeRepeat, TimeUnit.MILLISECONDS);

private Runnable runUpdatePreOrders = new Runnable() {
        public void run() {
            synchronized  (runUpdatePreOrders) {

                    try {
                        if (pause) wait();
                    } catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }

                new UpdateOrders(min_price, listener).execute();
                Log.e("UpdateBrodcast", "StartPreOrder");
            }
        }
    };

@Override
    public void onStart() {
        super.onStart();

        if (pause) {
            runUpdatePreOrders.notify();   // this IllegalMonitorStateException: object not locked by thread before
        }

        pause = false;


    }
4

1 に答える 1

4
      synchronized  (runUpdatePreOrders) {

                try {
                    if (pause) runUpdatePreOrders.wait();
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

            new UpdateOrders(min_price, listener).execute();
            Log.e("UpdateBrodcast", "StartPreOrder");
        }
    }

オブジェクトで同期する場合は、wait を呼び出して、同じオブジェクトで通知する必要があります

編集

  if (pause) {
      synchronized  (runUpdatePreOrders) {
            runUpdatePreOrders.notify();   // this IllegalMonitorStateException: object not locked by thread before
       }
   }
于 2013-02-15T10:24:55.883 に答える