1。たとえば、ファイルが途切れるか、ファイル転送が実際に操作を制御する必要があります。
2。スレッドには、作成、操作、操作、ブロッキング、および死亡の5つの状態があります。
作成:新しいオペレーターを使用してスレッドを作成します
実行可能:STARTメソッドを使用してスレッドを起動した後、システムはリソースを割り当てます
実行ステータス:スレッドの実行方法を実行します
ブロッキング:実行中のスレッドは何らかの理由で実行されなくなります
死の状態:スレッドは終了します
3。従来の方法の安全性の問題
Thread's Stop()、suspend()、resume()、Destroy()、およびDestroy()メソッドは安全ではなく、デッドロックを引き起こす可能性があるため使用されなくなります。
4.スレッドの動作を制御する方法
たとえば、ファイルの転送に10秒かかる場合は、特定の瞬間に転送してから、転送が完了するまで続行します。この方法を使用して、ファイル転送のために実行可能な実行可能クラスを実行可能に実装します
コードは次のとおりです。
コードコピーは次のとおりです。
パブリッククラスのThreadControltest1は実行可能です
{
private intパーセント= 0;
public void run()
{
while(true)
{
System.out.println( "転送進行:" +パーセント + "%");
試す
{
thread.sleep(1000);
}
キャッチ(例外Ex)
{}
パーセント += 10;
if(パーセント== 100)
{
System.out.println( "転送完了");
壊す;
}
}
}
public static void main(string [] args)
{
StreadControlTest1 ft = new StreadControltest1();
スレッドth = newスレッド(ft);
th.start();
}
}
5.コンソールでファイル転送を印刷するシミュレーションプロセスを実行します。このクラスのオブジェクトがスレッドとして実行されている場合、whileループは10回実行されてから終了することがわかります。
ただし、特定の瞬間(5秒後など)で実行されたスレッド(1分など)を一時停止する必要がありますが、スレッドの関連機能を使用することはできません。
この問題を解決するために、一般的な方法は次のとおりです。
1.一時停止する必要がある場合は、スレッドの実行方法を終了して無料のリソースに実行するだけです(実際、スレッドを永続的に終了させます)
2。スレッドを継続する必要がある場合、動作を続けるために新しいスレッドが開かれます。
実行方法を終了する方法は、実行方法に時間がかかります。
6.上記のコードは次のように変更できます。
コードコピーは次のとおりです。
パブリッククラスのThreadControltest1は実行可能です
{
private intパーセント= 0;
private boolean isrun = true;
public void run()
{
while(isrun)
{
System.out.println( "転送進行:" +パーセント + "%");
試す
{
thread.sleep(1000);
}
キャッチ(例外Ex)
{}
パーセント += 10;
if(パーセント== 100)
{
System.out.println( "転送完了");
壊す;
}
}
}
public static void main(string [] args)
{
StreadControlTest1 ft = new StreadControltest1();
スレッドth = newスレッド(ft);
th.start();
試す
{
thread.sleep(5000);
} catch(例外ex)
{}
ft.isrun = false;
system.out.println( "1分間の一時停止");
試す
{
thread.sleep(1000*60);
} catch(例外ex)
{}
ft.isrun = true;
th = newスレッド(ft);
th.start();
}
}