0

ループ内のスレッドを一時停止するボタンと、再開する別のボタンを作成する方法。

Runnable myRun = new Runnable(){

public void run(){

   for(int j =0 ;j<=words.length;j++){

       synchronized(this){
           try {

                wait(sleepTime);

                bt.setOnClickListener(new View.OnClickListener() {
                    public void onClick(View arg0) {

                                try {
                                    wait();
                                } catch (InterruptedException e) {
                                    e.printStackTrace();
                                }
                    }});
                bt2.setOnClickListener(new View.OnClickListener() {
                    public void onClick(View arg0) {
                        notify();

                    }
                });
                } catch (InterruptedException e) {
                e.printStackTrace();

            } }
       runOnUiThread(new Runnable(){
           public void run(){
               try {
                    et.setText(words[i]);
                    i++;
                } catch (Exception e) {
                    e.printStackTrace();
                }
           }});
      }}};

words.length=1000 回と言ういくつかのことを行って
から、ユーザーが id = bt の一時停止ボタンをクリックする間に休憩を取りたいとし
ます。このボタンはスレッドを一時停止し、ユーザーが id= bt1 で再開をクリックします。

4

2 に答える 2

0

以下はヒントです。問題に使用できると思います。最後に貼り付けたリンクからコピーしました。

待機は、待機中のモニターで通知を呼び出す別のプロセスによって「目覚める」ことができますが、スリープはできません。また、待機 (および通知) は、監視オブジェクトで同期されたブロックで発生する必要がありますが、スリープは発生しません。

Object mon = ...;
synchronized (mon) {
    mon.wait();
}

この時点で、現在実行中のスレッドは待機し、モニターを解放します。別のスレッドが行う可能性があります

同期 (月) { mon.notify(); } (同じ mon オブジェクトで) 最初のスレッド (モニターで待機している唯一のスレッドであると仮定) が起動します。

wait() と sleep() の違いを確認する

于 2013-03-07T07:18:44.263 に答える
0

次のようにします。

Javaでスレッドを無期限に一時停止し、後で再開する方法は?

suspend()ボタンの から およびその他のメソッドOnClickListenerを呼び出すのはあなただけです

于 2013-03-07T08:18:48.760 に答える