[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends:00467] Thread の一時停止と再開について



□■□■□■□■□■□■□■ ビジネスでの「困った」!はここで解決!
■ 全国から次々見積取得!□  ●既に5,000社超の企業様がご利用中 ●
□  ★楽天ビジネス★  ■  ●無料で簡単・素早く相見積を獲得!●
■□■□■□■□■□■□■□  ●HP作成、印刷、会計、何でもお任せ●
 ⇒ http://business.rakuten.co.jp/introduction/buyer_top.cfm?afl=fvq 
------------------------------------------------------------------------


信乃です。

参加したてで早速のメールで恐縮なのですが、
現在時刻をリアルタイムで表示し、
エリア内をクリックする度にクリックされた時間のまま表示がストップする。(わかりにくい・・・)
というアプレットを作っているのですが、1度目にクリックして、Thread.wait();を、
かけた後、もう一度クリックされたときにnotify();でスレッドを再開させることができず、
困っています。

以下がそのアプレットのソースなのですが、どなたかお力を貸していただければありがたく思います。
まだはじめたばかりで、実はものすごく初歩的な質問をしているのかもしれないのですが、
どうぞよろしくお願いします。(長いかとも思いましたが、一応、全文引用させていただきました。
ご迷惑をおかけしましたら、申し訳ございません。)

ここから**********************************************************************


import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
import java.util.Date;

public class Stop_Resume extends Applet implements Runnable{
  Thread th=null;

  //一時停止・再開フラグ 
  boolean flag=false;

  String msg="";
  public void start(){
    if(th==null){

      //新規スレッドオブジェクトの生成
      th=new Thread(this);

      th.start();
  }
  addMouseListener(
    new MouseAdapter(){
      public synchronized void mousePressed(MouseEvent e){
        if(flag){

          //テスト用・1=一時停止/2=再開
          msg="2";	 

          //一時停止・再開フラグの反転
          flag=!flag; 

          //スレッドの再開信号
          notify();

          //テスト用・ステータス行に一時停止・再開状態の表示
          showStatus(msg);
        }
        else{

          //テスト用・1=一時停止/2=再開
          msg="1";	

          //テスト用・ステータス行に一時停止・再開状態の表示
          showStatus(msg);

          //一時停止・再開フラグの反転
          flag=!flag;
        }
      }
    }
  );
  repaint();
}
public void paint(Graphics g){
  Date d=new Date();
  g.setColor(Color.blue);
  g.setFont(new Font("TimesRoman",Font.BOLD,40));
  g.drawString(d.toString(),0,60);
}
public void run(){
  while(true){
  try{
    th.sleep(1000);
      if (flag) {
        synchronized(th){
          while (flag){

            //スレッドの一時停止
            th.wait();
          }
        }
           }
  }
  catch(InterruptedException e){}
    repaint();
  }
 }
}

ここまで**********************************************************************

************************************

Shino Inuzuka
  Mail:Titta2@xxxxxxxxxxxx

************************************





_______________________________________________________



------------------------------------------------------------------------
目指せ!! 商品券20万,旅行券20万,デジカメ,PS2,Xbox…ホームページコンテスト
             http://isweb.infoseek.co.jp/hp_daiou/?svx=971122