JavaA2Z

KAB-studio > プログラミング > JavaA2Z > Threadとは

Thread

日本語 細い線
英語 thread
ふりがな すれっど
フリガナ スレッド

解説

スレッドを作るためのクラス
J2SEに含まれるクラスのひとつ。パッケージも含めたクラス名java.lang.Thread。
 
スレッドを作る場合、このThreadクラスサブクラスを作るか、Runnableインターフェイス実装クラスを作る。
Threadクラスのrun()メソッドオーバーライドし、start()メソッド呼び出すことで、run()メソッドは別スレッドとして実される。

参考サイト


(KAB-studioからのおしらせです)

サンプルプログラム(とか)サンプルを別ウィンドウで表示サンプルをクリップボードへコピー(WindowsでIEの場合のみ)

// Sample.java
public class Sample
{
    public static void main( String[] args )
    {
        TestThread thread1 = new TestThread();
        TestThread thread2 = new TestThread();

        // toString()の結果を出力しておきます。
        System.out.println( thread1.toString() );
        System.out.println( thread2.toString() );
        // Thread[Thread-1,5,main]
        // Thread[Thread-2,5,main]

        // そして実行。
        thread1.start();
        thread2.start();
        // Thread[Thread-1,5,main] : 0 : 2
        // Thread[Thread-2,5,main] : 0 : 6
        // Thread[Thread-1,5,main] : 1 : 8
        // Thread[Thread-2,5,main] : 1 : 6
        // Thread[Thread-1,5,main] : 2 : 10
        // Thread[Thread-2,5,main] : 2 : 6
        // Thread[Thread-2,5,main] : 3 : 1
        // Thread[Thread-2,5,main] : 4 : 7
        // Thread[Thread-1,5,main] : 3 : 10
        // Thread[Thread-2,5,main] : 終了。
        // Thread[Thread-1,5,main] : 4 : 10
        // Thread[Thread-1,5,main] : 終了。

        // このように、ふたつとも関係なく実行されます。
        // そして、main()メソッドは先に終了します。
        System.out.println( "main() : 終了。" );
        // main() : 終了。
        // ↑これは、上のスレッドでの出力のどこかに
        // 挟まれて出力されると思います。
    }
}

/**
*   別スレッドとして実行するためのクラス。
*/
class TestThread extends Thread
{
    /**
    *   Threadクラスのrun()メソッドを
    *   オーバーライドしたメソッド。このメソッドが
    *   別スレッドとして呼び出されます。
    */
    public void run()
    {
        // 5周ループします。
        forint iF1 = 0; iF1 < 5; ++iF1 )
        {
            // 待機秒数を作ります。
            int sleepSecond = ( ( (int)( Math.random() * 10 ) ) + 1 );
            // 自分自身のtoString()と、カウンター、それと待機秒数を出力します。
            System.out.println( this.toString() + " : " + iF1 + " : " + sleepSecond );
            try
            {
                // ランダムで、1~10秒間待ちます。
                sleep( sleepSecond  * 1000 );
            }
            catch( InterruptedException e )
            {
                // sleep()メソッドが途中で中断されると
                // InterruptedException例外が投げられます。
                // 滅多にないですが。
                e.printStackTrace();
            }
        }

        // 終わりました。
        System.out.println( this.toString() + " : 終了。" );
    }
}
// Sample.java
public class Sample
{
    public static void main( String[] args )
    {
        TestThread thread1 = new TestThread();
        TestThread thread2 = new TestThread();

        // toString()の結果を出力しておきます。
        System.out.println( thread1.toString() );
        System.out.println( thread2.toString() );
        // Thread[Thread-1,5,main]
        // Thread[Thread-2,5,main]

        // そして実行。
        thread1.start();
        thread2.start();
        // Thread[Thread-1,5,main] : 0 : 2
        // Thread[Thread-2,5,main] : 0 : 6
        // Thread[Thread-1,5,main] : 1 : 8
        // Thread[Thread-2,5,main] : 1 : 6
        // Thread[Thread-1,5,main] : 2 : 10
        // Thread[Thread-2,5,main] : 2 : 6
        // Thread[Thread-2,5,main] : 3 : 1
        // Thread[Thread-2,5,main] : 4 : 7
        // Thread[Thread-1,5,main] : 3 : 10
        // Thread[Thread-2,5,main] : 終了。
        // Thread[Thread-1,5,main] : 4 : 10
        // Thread[Thread-1,5,main] : 終了。

        // このように、ふたつとも関係なく実行されます。
        // そして、main()メソッドは先に終了します。
        System.out.println( "main() : 終了。" );
        // main() : 終了。
        // ↑これは、上のスレッドでの出力のどこかに
        // 挟まれて出力されると思います。
    }
}

/**
*   別スレッドとして実行するためのクラス。
*/
class TestThread extends Thread
{
    /**
    *   Threadクラスのrun()メソッドを
    *   オーバーライドしたメソッド。このメソッドが
    *   別スレッドとして呼び出されます。
    */
    public void run()
    {
        // 5周ループします。
        for( int iF1 = 0; iF1 < 5; ++iF1 )
        {
            // 待機秒数を作ります。
            int sleepSecond = ( ( (int)( Math.random() * 10 ) ) + 1 );
            // 自分自身のtoString()と、カウンター、それと待機秒数を出力します。
            System.out.println( this.toString() + " : " + iF1 + " : " + sleepSecond );
            try
            {
                // ランダムで、1~10秒間待ちます。
                sleep( sleepSecond  * 1000 );
            }
            catch( InterruptedException e )
            {
                // sleep()メソッドが途中で中断されると
                // InterruptedException例外が投げられます。
                // 滅多にないですが。
                e.printStackTrace();
            }
        }

        // 終わりました。
        System.out.println( this.toString() + " : 終了。" );
    }
}

この単語を含むページ

「みだし」に含まれているページ

はてなブックマーク 詳細を表示 はてなブックマーク ブックマーク数
livedoorクリップ 詳細を表示 livedoorクリップ ブックマーク数
Yahoo!ブックマーク 詳細を表示 users
del.icio.us 登録する RSSに登録
サンプルを別ウィンドウで表示
サンプルをクリップボードへコピー(WindowsでIEの場合のみ)
update:2005/05/18
このページは、Javaプログラミング言語についての用語を網羅した辞書「JavaA2Z」の一ページです。
詳しくは「JavaA2Z」表紙の説明をご覧ください。