ダークホースプログラマー-----合併

2603 ワード

---- androidトレーニング、javaトレーニング、あなたとの交流を期待しています。--------
概念:
スレッドは最小の制御と実行ユニットであり、スレッドはプロセス内に存在し、各プロセスは少なくとも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/