JAvaマルチスレッド-簡単なチケット販売プログラム
需要:簡単な切符販売プログラム.
複数の窓口で切符を売る
第1種
staticの定義(ライフサイクルが長すぎる)
スレッドを作成する第2の方法.Runableインタフェースの実装
1.クラス実装Runnableインタフェースの定義
2.Runnableインタフェースのrunメソッドを上書きする
スレッドを実行するコードをrunメソッドに格納
3.Threadクラスでスレッドオブジェクトを作成します.
4.Runnableインタフェースのサブクラスオブジェクトを実際のパラメータとしてThreadのコンストラクタに渡す
なぜrunnableインタフェースのサブクラスオブジェクトをThreadコンストラクション関数に渡すのか
なぜなら,カスタムrunメソッドが属するオブジェクトはRunnableインタフェースのサブクラスオブジェクトであるからである.
したがって、スレッドにオブジェクトのrunメソッドを指定させます.runメソッドが属するオブジェクトを明確にする必要があります
5.Threadクラスを呼び出すstartメソッドスレッドを開きrunnableインタフェースサブクラスを呼び出すrunメソッド
Runnable
実現方式と継承方式の違いは何ですか?
実現方式のメリット;単一継承の限界を回避
スレッドを定義するとき.インプリメンテーションの使用を推奨
2つの方法の違い:
Threadスレッドコードを継承してThreadサブクラスrunメソッドに格納
Runnableを実現します.スレッドコードには、インタフェースサブクラスのrunメソッドが存在します.
複数の窓口で切符を売る
第1種
staticの定義(ライフサイクルが長すぎる)
スレッドを作成する第2の方法.Runableインタフェースの実装
1.クラス実装Runnableインタフェースの定義
2.Runnableインタフェースのrunメソッドを上書きする
スレッドを実行するコードをrunメソッドに格納
3.Threadクラスでスレッドオブジェクトを作成します.
4.Runnableインタフェースのサブクラスオブジェクトを実際のパラメータとしてThreadのコンストラクタに渡す
なぜrunnableインタフェースのサブクラスオブジェクトをThreadコンストラクション関数に渡すのか
なぜなら,カスタムrunメソッドが属するオブジェクトはRunnableインタフェースのサブクラスオブジェクトであるからである.
したがって、スレッドにオブジェクトのrunメソッドを指定させます.runメソッドが属するオブジェクトを明確にする必要があります
5.Threadクラスを呼び出すstartメソッドスレッドを開きrunnableインタフェースサブクラスを呼び出すrunメソッド
Runnable
実現方式と継承方式の違いは何ですか?
実現方式のメリット;単一継承の限界を回避
スレッドを定義するとき.インプリメンテーションの使用を推奨
2つの方法の違い:
Threadスレッドコードを継承してThreadサブクラスrunメソッドに格納
Runnableを実現します.スレッドコードには、インタフェースサブクラスのrunメソッドが存在します.
/*
: 。
static( )
。 Runable
1. Runnable
2. Runnable run
run
3. Thread 。
4. Runnable Thread
runnable Thread
, run Runnable
run 。 run
5. Thread start runnable run
Runnable
?
;
。
:
Thread Thread run
Runnable。 run 。
*/
class Ticket implements Runnable//extends Thread
{
private int tick = 100;
public void run()
{
while(true)
{
if(tick>0){
System.out.println(Thread.currentThread().getName()+"sale:"+tick--);
}
}
}
}
class Test_11_07
{
public static void main(String[] args)
{
System.out.println("Hello Wolrd");
Ticket t = new Ticket();
Thread t1 = new Thread(t);// ;
Thread t2 = new Thread(t);// ;
Thread t3 = new Thread(t);// ;
Thread t4 = new Thread(t);// ;
t1.start();
t2.start();
t3.start();
t4.start();
/*
Ticket t1 = new Ticket();
Ticket t2 = new Ticket();
Ticket t3 = new Ticket();
Ticket t4 = new Ticket();
t1.start();
t2.start();
t3.start();
t4.start();
*/
}
}