Rumah  >  Artikel  >  Java  >  Bagaimana untuk Mengawal Benang dalam Java: Memulakan, Berhenti, dan Mulakan Semula?

Bagaimana untuk Mengawal Benang dalam Java: Memulakan, Berhenti, dan Mulakan Semula?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-01 12:36:02747semak imbas

How to Control Threads in Java: Starting, Stopping, and Restarting?

Kawalan Benang dalam Java: Memulakan, Menghentikan dan Memulakan Semula

Memulakan utas adalah semudah mencipta contoh kelas Benang dan memanggil kaedah mula (). Urutan kemudian akan melaksanakan kod dalam kaedah run()nya.

Memberhentikan benang, walau bagaimanapun, bukanlah semudah itu. Sebaik sahaja benang dimulakan, tidak ada cara langsung untuk menghentikannya. Sebaliknya, anda boleh menggunakan teknik untuk memberitahu urutan bahawa ia harus berhenti melaksanakan.

Satu pendekatan biasa ialah menggunakan bendera boolean untuk menunjukkan sama ada utas harus terus berjalan. Dalam kaedah run() benang, anda boleh menyemak bendera dengan kerap dan menamatkan pelaksanaan apabila ia ditetapkan kepada palsu.

<code class="java">// Task.java

private boolean isRunning = true;

@Override
public void run() {
    while (isRunning) {
        // Perform tasks here
    }
}

public void stop() {
    isRunning = false;
}</code>

Memulakan Semula Benang

Memulakan semula thread bermaksud mencipta contoh baharu kelas Thread dan memulakannya. Ini kerana benang tidak boleh digunakan semula setelah ia berhenti. Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa mana-mana data atau keadaan yang dikekalkan oleh urutan asal tidak akan dipindahkan ke urutan baharu.

Pilihan 1: Cipta Benang Baharu

<code class="java">Thread taskThread = new Thread(new Task());
taskThread.start();

// Later, to restart the thread...
taskThread = new Thread(new Task());
taskThread.start();</code>

Pilihan 2: Maklumkan dan Mulakan Semula

<code class="java">// Task.java

private Object lock = new Object();

@Override
public void run() {
    while (true) {
        synchronized (lock) {
            if (shouldStop) {
                try {
                    lock.wait();
                } catch (InterruptedException e) {}
            }
        }
        // Perform tasks here
    }
}

public void stop() {
    synchronized (lock) {
        shouldStop = true;
        lock.notify();
    }
}

public void restart() {
    synchronized (lock) {
        shouldStop = false;
        lock.notify();
    }
}</code>

Atas ialah kandungan terperinci Bagaimana untuk Mengawal Benang dalam Java: Memulakan, Berhenti, dan Mulakan Semula?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn