1. Kontrol utas sangat umum.
2. Thread memiliki lima negara bagian: pembuatan, operasi, operasi, pemblokiran, dan kematian.
Buat: Buat utas menggunakan operator baru
Runable: Setelah memulai utas menggunakan metode start, sistem mengalokasikan sumber daya
Status Menjalankan: Jalankan metode pelaksanaan utas
Pemblokiran: Thread yang berjalan berhenti berjalan karena suatu alasan
Status Kematian: Utas Berakhir
3. Masalah Keselamatan Metode Tradisional
Metode thread's stop (), suspend (), resume (), hancurkan (), dan hancurkan () tidak lagi digunakan karena tidak aman dan dapat menyebabkan kebuntuan.
4. Cara mengontrol pengoperasian utas
Misalnya, jika transfer file memakan waktu 10 detik, biarkan ditransfer ke momen tertentu dan kemudian lanjutkan sampai transfer selesai. Gunakan metode untuk mengimplementasikan Runnable, pertama -tama, kelas Runnable untuk transfer file
Kodenya adalah sebagai berikut:
Salinan kode adalah sebagai berikut:
Public Class ThreadControltest1 mengimplementasikan runnable
{
Private int persen = 0;
public void run ()
{
Sementara (benar)
{
System.out.println ("Kemajuan Transfer:" + Persen + "%");
mencoba
{
Thread.sleep (1000);
}
Catch (Exception Ex)
{}
Persen += 10;
if (persen == 100)
{
System.out.println ("Transfer selesai");
merusak;
}
}
}
public static void main (string [] args)
{
ThreadControltest1 ft = new threadControltest1 ();
Thread th = new thread (ft);
th.start ();
}
}
5. Jalankan proses simulasi transfer file pencetakan pada konsol. Dapat dilihat bahwa jika objek kelas ini dijalankan sebagai utas, loop sementara akan dieksekusi 10 kali dan kemudian keluar.
Namun, Anda perlu menjeda utas yang berjalan (seperti 1 menit) pada saat tertentu (seperti 5 detik kemudian), tetapi Anda tidak dapat menggunakan fungsi terkait Thread.
Untuk mengatasi masalah ini, metode umum adalah sebagai berikut:
1. Ketika perlu untuk berhenti, cukup biarkan metode yang dijalankan utas akan berjalan ke sumber daya gratis (pada kenyataannya, biarkan utas berakhir secara permanen)
2. Ketika utas perlu dilanjutkan, utas baru akan dibuka untuk terus bekerja.
Bagaimana cara membuat metode run berakhir?
6. Kode di atas dapat diubah ke yang berikut:
Salinan kode adalah sebagai berikut:
Public Class ThreadControltest1 mengimplementasikan runnable
{
Private int persen = 0;
private boolean isrun = true;
public void run ()
{
while (Isrun)
{
System.out.println ("Kemajuan Transfer:" + Persen + "%");
mencoba
{
Thread.sleep (1000);
}
Catch (Exception Ex)
{}
Persen += 10;
if (persen == 100)
{
System.out.println ("Transfer selesai");
merusak;
}
}
}
public static void main (string [] args)
{
ThreadControltest1 ft = new threadControltest1 ();
Thread th = new thread (ft);
th.start ();
mencoba
{
Thread.sleep (5000);
} catch (Exception Ex)
{}
ft.isrun = false;
System.out.println ("Jeda selama satu menit");
mencoba
{
Thread.sleep (1000*60);
} catch (Exception Ex)
{}
ft.isrun = true;
th = utas baru (ft);
th.start ();
}
}