スレッドの一時停止
Threadクラスにはスレッドを指定した時間だけ一時停止させることができるメソッドが備わっています。
今回はスレッドを一時停止させる方法を見ていきます。
上記サンプルは『スレッドの停止』記事で使用したものとまったく同じものです。
→ 動作確認
スレッドの一時停止はThreadクラスのsleep()メソッドを使うことで実現できます。
sleep()メソッドは一時停止させる時間を指定するための2つの方法を備えています。
下記がsleep()メソッドを呼び出しているコード部分です。
sleep()メソッドに指定する時間はミリ秒(1000分の1)単位ですので、1000を指定すると1秒間スレッドを一時停止させることになります。
sleep()メソッドによってスレッドが一時停止している場合、その分のCPU資源は他のスレッドに割り当てられます。
今回はスレッドを一時停止させる方法を見ていきます。
import java.applet.*;
import java.awt.Graphics;
import java.awt.event.MouseListener;
import java.awt.event.MouseEvent;
public class Timer extends Applet implements Runnable, MouseListener{
private Thread th;
private boolean running;
private int width;
private int height;
private int count;
public void init(){
width = getSize().width; //Javaアプレット画面横幅サイズ取得
height = getSize().height; //Javaアプレット画面縦幅サイズ取得
addMouseListener(this); //マウスイベントを受け取り準備
}
public void start(){
running = false;
}
public void mouseClicked(MouseEvent e){
}
public void mouseEntered(MouseEvent e){
}
public void mouseExited(MouseEvent e){
}
public void mousePressed(MouseEvent e){
if(running == false){
count = 0;
running = true;
th = new Thread(this);
th.start(); //新しいスレッド起動
}else{
running = false;
}
}
public void mouseReleased(MouseEvent e){
}
public void run(){
try{
while(running){
count++ ;
repaint();
Thread.sleep(1000); //スレッド一時停止(1秒)
}
}catch(Exception e){}
}
public void paint(Graphics g){
g.drawString("" + count, 50,50);
}
}
上記サンプルは『スレッドの停止』記事で使用したものとまったく同じものです。
→ 動作確認
スレッドの一時停止はThreadクラスのsleep()メソッドを使うことで実現できます。
sleep()メソッドは一時停止させる時間を指定するための2つの方法を備えています。
sleep(long millis)
現在実行中のスレッドを、指定されたミリ秒数の間、
スリープ (一時的に実行を停止) させます。
sleep(long millis, int nanos)
現在実行中のスレッドを、指定されたミリ秒数に指定された
ナノ秒数を加算した間、スリープ (実行停止) させます。
下記がsleep()メソッドを呼び出しているコード部分です。
public void run(){
try{
while(running){
count++ ;
repaint();
Thread.sleep(1000); //スレッド一時停止(1秒)
}
}catch(Exception e){}
}sleep()メソッドに指定する時間はミリ秒(1000分の1)単位ですので、1000を指定すると1秒間スレッドを一時停止させることになります。
sleep()メソッドによってスレッドが一時停止している場合、その分のCPU資源は他のスレッドに割り当てられます。
