0

如何创建一个按钮来暂停循环内的线程和另一个按钮恢复。

Runnable myRun = new Runnable(){

公共无效运行(){

   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.lenght=1000 次
然后假设用户想要在
点击暂停按钮 id = bt 之间休息这个按钮暂停线程直到用户点击 id = bt1 的恢复

4

2 回答 2

0

下面是一个提示,我想你可以用它来解决你的问题。它是从我最后粘贴的链接中复制的。

另一个进程在正在等待的监视器上调用 notify 可以“唤醒”等待,而 sleep 则不能。此外,在监视器对象上同步的块中必须发生等待(和通知),而睡眠则不会:

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

此时当前正在执行的线程等待并释放监视器。另一个线程可能会做

同步 (mon) { mon.notify(); }(在同一个 mon 对象上)和第一个线程(假设它是唯一在监视器上等待的线程)将被唤醒。

检查wait() 和 sleep() 之间的区别

于 2013-03-07T07:18:44.263 回答
0

你这样做:

如何无限期地暂停Java中的线程并稍后恢复它?

只有您suspend()从按钮中调用 the 和其他OnClickListener方法

于 2013-03-07T08:18:48.760 回答