« JAVAばっかりやっていると脳が退化してしまいそう(なくらい色々便利な機能が揃っている) | メイン | 増えるがな! »

2005年06月30日

頭の弱さはいかんともし難い。

つまり

何で毎日早く寝ようと思っているのに早く寝れないのかって事。
遡るとそれはつまり、昔早く寝なかった事が未だに増幅されて影響しているのです。
これを断ち切るには毎日少しずつ早く寝るしかない。
簡単にできたら苦労はしないです。
煙草中毒の人の気持ちがよくわかりますね。

ああ、暑いと思ったら窓が閉まってた。

ひがしのほう

http://www16.big.or.jp/~zun/cgi-bin/diary/nicky.cgi


8月に一迅社さまから、東方のもう一つの新作、
「東方文花帖 ~ Bohemian Archive in Japanese Red.」
が出版されます。

購入決定。

メモ

とりあえずこっちの方が直接extendするより汎用性が高そうなのです。
でも、機密性の高いコンポーネント(?)を作るのならばきっとそっちの方が良いとは思います。

STEP1

implements Runnable
スレッド化したいクラスにRunnableインタフェースを実装します。
run()メソッドが入っていれば後は適当で問題無し。

STEP2

start()
1.Runnableを実装したクラスのインスタンスを生成します。
2.Threadクラス(java.langに入ってるので適当に。)のインスタンスをコンストラクタに1のインスタンスを乗せて生成します。
3.2のインスタンスのstart()メソッドを呼び出します。

これでスレッドが走るのです。なんと便利な事でしょう。

Concluding

説明におかしい所は無いと思うのですが、後で見返すためのメモにしては意味がさっぱりわかりません。
とりあえず、スレッドの実装には二種類あります。

Runnableインタフェースを実装するにしても、結局はThreadクラスを利用するわけです。

単純なスレッド

http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/lang/Thread.html

コンストラクタ
Thread()
Thread(Runnable r)

前者はThreadクラスを継承した場合かなあ。
後者はRunnableインタフェースを埋め込むのに使います。

単純なメソッド

void run()
スレッド内のmainメソッド。
スレッドを起動するとここの中身が勝手に実行される。
Runnableインタフェースを実装するにしても、Threadを継承するにしてもオーバーライドする必要のある重要なメソッド。

void start()
スレッドを起動する。
単純なプログラムにおいてはrun()を呼ぶのと同じに見えるけれど、スレッド特有の処理を勝手にやってくれる重要なメソッドなので、
こちらから呼び出す必要があります。

基本的にこれらだけで簡単な実装は可能です。

勘違いしやすい(私が)事ですが、基本的にスレッドは単に一つの処理を並行して行おうというだけの趣旨なので、別に使い終わった後に破棄する必要はありません。
処理を終えたらスレッドが消滅するだけだからです。(これもJAVAの便利機能の一つかもしれませんが。C++ではどうなっているやら)

サンプル(かなり一部抜粋)

class NetThread

tempSock = servSock.accept();
ServerConnect servCon = new ServerConnect(tempSock);
Thread connectionThread = new Thread(servCon);
ConnectionThread.start();

class ServerConnect implements Runnable{
 public void run(){
  try{

  OutputStream os = s.getOutputStream();
  DataOutputStream dos = new DataOutputStream(os);
  int randomNum = random.nextInt();
  dos.writeInt(randomNum);
  s.close();
 }
 catch(IOException e){
  System.err.println(e);
 }
}

投稿者 miff : 2005年06月30日 01:27

コメント



XREAAD