この章に関係する内容は次のとおりです。
1。
2。IVERD()例
3。lied()とwait()の比較
1。
evels()の目的は、屈服することです。これにより、現在のスレッドは「実行状態」から「Ready State」を入力できます。そのため、同じ優先度のある他の待機スレッドは実行権を取得できます。同じ優先事項があります。
2。IVERD()例
以下に、例ごとにその使用法を参照してください。
コードコピーは次のとおりです。
// edveytest.javaソースコード
クラスのthreadaはスレッドを拡張します{
public threada(string name){
super(name);
}
public同期void run(){
for(int i = 0; i <10; i ++){
System.out.printf( "%s [%d]:%d/n"、this.getname()、this.getPriority()、i);
// 4を分割したら、収量を呼び出します
if(i%4 == 0)
thread.yield();
}
}
}
パブリッククラスのevelytest {
public static void main(string [] args){
threada t1 = new Streada( "T1");
threada t2 = new Streada( "T2");
t1.start();
t2.start();
}
}
(一度)操作結果:
コードコピーは次のとおりです。
T1 [5]:0
T2 [5]:0
T1 [5]:1
T1 [5]:2
T1 [5]:3
T1 [5]:4
T1 [5]:5
T1 [5]:6
T1 [5]:7
T1 [5]:8
T1 [5]:9
T2 [5]:1
T2 [5]:2
T2 [5]:3
T2 [5]:4
T2 [5]:5
T2 [5]:6
T2 [5]:7
T2 [5]:8
T2 [5]:9
結果説明:
「スレッドT1」を4で統合できる場合、「Thread T2」に切り替えません。これは、収量()が「ランニング状態」から「準備ができた状態」を入力できることを示していますが、必ずしも他のスレッドがCPUの実行権を取得できるわけではありません(つまり、他のスレッドは「実行状態」に入ります)この「他のスレッド」が、現在evel()を呼び出しているスレッドと同じ優先順位を持っている場合でも。
3。lied()とwait()の比較
wait()の関数は、現在のスレッドが「running状態」から「wait(blocking)状態を入力し、同期ロックを解放できるようにすることであることがわかります。 evels()の関数は屈服することであり、これにより現在のスレッドが「実行中の状態」を離れることになります。それらの違いは次のとおりです。
(01)wait()は、スレッドが「実行状態」から「wait(blocking)状態」に入るようにすることです。
(02)wait()は、保持されるオブジェクトをスレッドリリースする同期ロックです。
次の例は、evel()がロックを放出しないことを示しています。
コードコピーは次のとおりです。
// AldeLocktest.javaソースコード
パブリッククラスのhiredlocktest {
private staticオブジェクトobj = new object();
public static void main(string [] args){
threada t1 = new Streada( "T1");
threada t2 = new Streada( "T2");
t1.start();
t2.start();
}
静的クラススレッドはスレッドを拡張します{
public threada(string name){
super(name);
}
public void run(){
// OBJオブジェクトの同期ロックを取得します
同期(obj){
for(int i = 0; i <10; i ++){
System.out.printf( "%s [%d]:%d/n"、this.getname()、this.getPriority()、i);
// 4を分割したら、収量を呼び出します
if(i%4 == 0)
thread.yield();
}
}
}
}
}
(一度)結果:
コードコピーは次のとおりです。
T1 [5]:0
T1 [5]:1
T1 [5]:2
T1 [5]:3
T1 [5]:4
T1 [5]:5
T1 [5]:6
T1 [5]:7
T1 [5]:8
T1 [5]:9
T2 [5]:0
T2 [5]:1
T2 [5]:2
T2 [5]:3
T2 [5]:4
T2 [5]:5
T2 [5]:6
T2 [5]:7
T2 [5]:8
T2 [5]:9
結果説明:
2つのスレッドT1とT2がメインスレッドメインで開始されます。 T1とT2は、run()、つまり同期(OBJ)の同じオブジェクトの同期ロックを参照します。 T1操作中。 T1は「OBJが保持している同期ロック」をリリースしないためです!