ダークホースプログラマー-----合併
2603 ワード
---- androidトレーニング、javaトレーニング、あなたとの交流を期待しています。--------
概念:
スレッドは最小の制御と実行ユニットであり、スレッドはプロセス内に存在し、各プロセスは少なくとも1つまたは複数のスレッドを有する。
作成スレッドには2つの方法があります。
一つの方法は、Thread類を継承し、run方法を上書きすることです。
スレッドを作成する別の方法は、Runnableインターフェースを継承し、run方法を実現することである。
マルチスレッドの特性、ランダム性、CPUはどのスレッドを実行するかを決定し、手順は不確定です。
凍結プロセスには二つの方法があります。
sleep--」時間を知る
wait()---」notify()で起きるまでスレッドは待ち続けます。
プロセスを削除
stop()
マルチスレッドは常にスレッドの安全問題を発生します。
同期コードを使って解決できます。
1.スレッドが二つ以上ある必要があります。
2.複数のスレッドが同じロックを使用している必要があります。
弊害:複数スレッドはロックを判定し、比較的資源を消耗する必要があります。
同期方法には、オブジェクトのロックが入っていません。同期方法で使用されるロックは、メソッドのクラスの例です。
静的同期方法で使用されるロックは、所在クラスのバイトコードオブジェクトです。
同期はデッドロックの場合があります。
デッドロックは通常同期中に発生します。
同期ネストロック
スレッド間通信:
同じリソースを操作しますが、動作が違います。
起動待ち機構
明示的なロックはschronized解決策に取って代わった。
Objectのwait notifyとnotifyAllに代わりました。
新しい特性では、一つのロックはN個のconditionによって結合され得る。
このように異なるconditionは、異なるスレッド状態を変えることができる。
Threadが提供する更新のinterrupt方法は、凍結中のスレッドを強制的に実行状態に戻します。
デーモンプロセスはバックグラウンドプロセスです。
set Deamon()をデーモンに設定します。
バックグラウンドのすべてのプロセスがデーモンである場合、プログラムは終了します。
ジョインはCPU実行権を奪う。
カジュアルクラスset Priorityの設定
Priorityはデフォルトは5で、最小は1で、最大は10です。
----------
詳細はご覧ください。http://edu.csdn.net/heima/
概念:
スレッドは最小の制御と実行ユニットであり、スレッドはプロセス内に存在し、各プロセスは少なくとも1つまたは複数のスレッドを有する。
作成スレッドには2つの方法があります。
一つの方法は、Thread類を継承し、run方法を上書きすることです。
Class ThreadCase extends Thread{
public void run(){
//dosomething
}
}
スレッドを生成して実行すると、Threadのstartを呼び出す方法です。new ThreadCase().start()
!run()を直接呼び出す方法は、run()メソッド内部のコードを実行することができますが、新しいスレッドを生成することはできません。通常の方法とは違いません。スレッドを作成する別の方法は、Runnableインターフェースを継承し、run方法を実現することである。
Class RunableCase implements Runnable{
public void run(){
//dosomething
}
}
Runnableを対象としてThread類に送る構造方法new Thread(new RunnableCase()).start();
Thread類の直接継承とは異なり、Runnableインターフェースは単一継承の限界を回避しています(!javaでは1つのクラスのみの継承が許可されていますが、複数のインターフェースが可能です)マルチスレッドの特性、ランダム性、CPUはどのスレッドを実行するかを決定し、手順は不確定です。
凍結プロセスには二つの方法があります。
sleep--」時間を知る
wait()---」notify()で起きるまでスレッドは待ち続けます。
プロセスを削除
stop()
マルチスレッドは常にスレッドの安全問題を発生します。
同期コードを使って解決できます。
synchronized(Object)
{}
同期の前提:1.スレッドが二つ以上ある必要があります。
2.複数のスレッドが同じロックを使用している必要があります。
弊害:複数スレッドはロックを判定し、比較的資源を消耗する必要があります。
同期方法には、オブジェクトのロックが入っていません。同期方法で使用されるロックは、メソッドのクラスの例です。
静的同期方法で使用されるロックは、所在クラスのバイトコードオブジェクトです。
ClassName.class
餓漢式スレッドは安全で、怠け者式では遅延負荷が可能ですが、スレッドの安全問題が発生します。同期が必要です。同期はデッドロックの場合があります。
デッドロックは通常同期中に発生します。
同期ネストロック
スレッド間通信:
同じリソースを操作しますが、動作が違います。
起動待ち機構
wait()
notify()
これらの方法はモニターが必要ですので、同期中のみ存在します。Objectkey.wait()
Objectkey.notify()
Objectkey.notifyAll()
JDK 5中明示的なロックはschronized解決策に取って代わった。
Objectのwait notifyとnotifyAllに代わりました。
新しい特性では、一つのロックはN個のconditionによって結合され得る。
このように異なるconditionは、異なるスレッド状態を変えることができる。
lock lock=new ReentrantLock();
Condition cond = lock.newCondition();
//
lock.lock()//
lock.unlock()//
// condition
cond.await();
cond.signal()
スレッドの停止方法、stopはもう古いです。Threadが提供する更新のinterrupt方法は、凍結中のスレッドを強制的に実行状態に戻します。
デーモンプロセスはバックグラウンドプロセスです。
set Deamon()をデーモンに設定します。
バックグラウンドのすべてのプロセスがデーモンである場合、プログラムは終了します。
ジョインはCPU実行権を奪う。
t1.start()
t2.staty()
t1.join()
このとき、メインラインは実行権を解放し、t 1、t 2は争奪を行い、t 1が実行されるまで、メインラインは回復し、t 2と実行権を奪い合うことができる。カジュアルクラスset Priorityの設定
Priorityはデフォルトは5で、最小は1で、最大は10です。
MAX_PRIORITY=10
MIN_PRIORITY=1
NORM_PRIORITY=5
---- androidトレーニング、javaトレーニング、あなたとの交流を期待しています。----------
詳細はご覧ください。http://edu.csdn.net/heima/