Jadual Kandungan
Operasi biasa rangkaian
Benang Daemon (benang latar belakang)
Penyirian benang
Rumah Java javaTutorial Apakah operasi benang Java yang biasa digunakan?

Apakah operasi benang Java yang biasa digunakan?

Apr 24, 2023 am 11:55 AM
java

Operasi biasa rangkaian

Tetapkan nama utas: setName()

Dapatkan nama utas: getName()

ID unik utas: getId()

// 自定义线程名称
String threadName = "threadName";
// 构造方法方式
Thread thread = new Thread(() -> {
    System.out.println("线程名=" + Thread.currentThread().getName());
},threadName);
// set方法方式
// thread.setName(threadName);
System.out.println("线程唯一Id=" + thread.getId());
Salin selepas log masuk

Permulaan utas: start()

Nilai sama ada utas itu hidup: isAlive()

// 线程启动
thread.start();
System.out.println("是否为存活线程=" + thread.isAlive());
Salin selepas log masuk

Kaedah utas: run() /call()

Kaedah yang akan dipanggil selepas thread dimulakan. Perkara yang ingin dilakukan oleh utas adalah ditulis dalam kaedah run/call. Tidak perlu memanggilnya secara langsung Selepas utas dimulakan, ia akan memanggil run()/call(). Jika program memanggil run/call terus tanpa memulakan thread, maka ia bukan milik pengaturcaraan berbilang benang, tetapi ia tergolong dalam thread semasa untuk memanggil terus kaedah biasa.

Dapatkan objek utas semasa: currentThread()

Untuk mengendalikan kaedah bukan statik benang semasa, anda mesti mendapatkan objek utas dahulu.

// 获取当前线程对象
Thread currentThread = Thread.currentThread();
// 对当前线程做一些操作
System.out.println(currentThread.getName());
try {
    // sleep 静态方法则不需要
    Thread.sleep(1000);
} catch (InterruptedException e) {
    e.printStackTrace();
}
Salin selepas log masuk

Mengenai operasi kawalan status benang (Kitaran hayat) boleh merujuk kepada artikel sebelumnya.

Benang Daemon (benang latar belakang)

Penjaga benang biasa (benang pengguna) Tugas benang daemon adalah untuk menyediakan perkhidmatan untuk benang lain. Jika tiada benang pengguna dalam proses, maka benang daemon tidak mempunyai makna, dan JVM juga akan berakhir. Benang daemon biasa termasuk benang kutipan sampah JVM, dan permulaan sistem pengendalian juga akan memulakan benang daemon pelbagai modul.

Tetapkan benang sebagai benang daemon: setDaeman()

Nota: Kaedah ini mesti dipanggil sebelum kaedah mula()

public static void main(String[] args) {
    Thread thread = new Thread(() -> {
        System.out.println("线程名="+Thread.currentThread().getName());
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        // 这一句不会打印出来,因为main线程(目前唯一的普通线程)等待1秒后已经结束了
        System.out.println("守护线程的状态=" + Thread.currentThread().getState());
    });
    // 守护线程
    thread.setDaemon(true);
    // 线程启动
    thread.start();
    System.out.println("是否为守护线程=" + thread.isDaemon());
}
Salin selepas log masuk

Penyirian benang

Benang yang melaksanakan kaedah join() memasuki Keadaan menunggu (MENUNGGU) sehingga benang yang dipanggil kaedah tamat dan kemudian berubah daripada keadaan menunggu kepada keadaan boleh dijalankan (BOLEH LARI). Kaedah join() ialah kaedah dalam kelas Thread Kaedah asasnya ialah menggunakan kaedah wait() untuk merealisasikan thread waiting () Apabila thread isAlive() is false, serialization of the thread is

dilaksanakan: satu benang memanggil Join() lain objek benang untuk melaksanakan pelaksanaan bersiri benang.

Contohnya: hidangan yang bagus

public class DemoCooking {
    
    public static void main(String[] args) {
        Thread mainThread = Thread.currentThread();
        // 1.买菜
        Thread buyThread = new Thread(new CookingThread(mainThread,"买菜"),"buyThread");
        // 2.洗菜
        Thread washThread = new Thread(new CookingThread(buyThread,"洗菜"),"washThread");
        // 3.切菜
        Thread cutThread = new Thread(new CookingThread(washThread,"切菜"),"cutThread");
        // 4.炒菜
        Thread scrambleThread = new Thread(new CookingThread(cutThread,"炒菜"),"scrambleThread");

        // 不受线程启动顺序的影响
        scrambleThread.start();
        washThread.start();
        cutThread.start();
        buyThread.start();
        
        // main线程先执行完才可以开始:买菜
        System.out.println("开始准备……");
    }

    public static class CookingThread implements Runnable{
        private final Thread thread;
        private final String job;

        public CookingThread(Thread thread, String job){
            this.thread = thread;
            this.job = job;
        }
        @Override
        public void run() {
            String name = Thread.currentThread().getName()+":";
            try {
                thread.join();

                System.out.println(name + job + "开始");
                Thread.sleep(1000);
                System.out.println(name + job + "结束");
                Thread.sleep(1000); // 偷懒下
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}
Salin selepas log masuk

Hasil pelaksanaan: utama > buyThread > cutThread > menyediakan...

beliBenang: mula membeli-belah sayur
beliBenar: tamat membeli-belah sayur

mencuciBenang: mula membasuh sayur
mencuciBenang: selesai membasuh sayur
memotongBenang: mula memotong sayur
memotong Benang :Cincang tamat
ScrambleThread: Tumis bermula
scrambleThread: Tumis tamat


Thread priority

Tetapkan keutamaan thread semasa keutamaan, lebih tinggi keutamaan utas Semakin banyak kali boleh dilaksanakan, keutamaan utas Java diwakili oleh integer Julat keutamaan ialah 1-10, dan lalai ialah 5.

kaedah setPriority(int): Tetapkan keutamaan utas.

kaedah getPriority: Dapatkan keutamaan utas.

Gangguan Benang

public static void main(String[] args) {

    Thread thread = new Thread(() -> {
        System.out.println("线程1");
    });
    thread.setPriority(10);
    Thread thread1 = new Thread(() -> {
        System.out.println("线程2");
    });
    thread1.setPriority(1);
    thread.start();
    thread1.start();

    System.out.println("线程默认的优先级为=" + Thread.currentThread().getPriority());

}
Salin selepas log masuk
Gunakan kaedah interrupt() untuk menetapkan bendera gangguan benang = benar, supaya isyarat gangguan dilemparkan apabila benang "disekat". Jika urutan disekat, menunggu untuk bangun atau keadaan menunggu tamat masa (Object.wait, Thread.join dan Thread.sleep), maka ia akan menerima pengecualian gangguan (InterruptedException) dan menamatkan keadaan lebih awal. Sebaliknya, jika benang berada dalam keadaan "BOLEH RUNNABLE", bendera gangguan tidak akan memberi kesan.

Kes 1: Gangguan benang adalah sah

Hasil pelaksanaan:

public static void main(String[] args) {
    Thread thread = new Thread(() -> {
        System.out.println("线程1");
        try {
            // 闹钟1分钟后响
            Thread.sleep(60000);
            System.out.println("闹钟响了");
        } catch (InterruptedException e) {
            // 提前退出超时等待状态
            System.out.println("发生异常,提前醒了,闹钟没响手动关了");
        }

        System.out.println("继续执行该线程的后续程序……");

    });
    thread.setPriority(1);
    thread.start();
    thread.interrupt();
    System.out.println("main线程将thread 终端状态设置为 "+thread.isInterrupted());
}
Salin selepas log masuk

benang utama menetapkan status terminal benang kepada benar

Benang 1
Pengecualian berlaku, saya bangun awal, penggera tidak berbunyi dan saya mematikannya secara manual

Teruskan untuk melaksanakan program urutan seterusnya...


Kes 2: Gangguan benang adalah tidak sah

Hasil pelaksanaan: Benang sentiasa mencetak statusnya sebagai RUNNABLE.

Atas ialah kandungan terperinci Apakah operasi benang Java yang biasa digunakan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Akan R.E.P.O. Ada Crossplay?
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Nombor Sempurna di Jawa Nombor Sempurna di Jawa Aug 30, 2024 pm 04:28 PM

Panduan Nombor Sempurna di Jawa. Di sini kita membincangkan Definisi, Bagaimana untuk menyemak nombor Perfect dalam Java?, contoh dengan pelaksanaan kod.

Weka di Jawa Weka di Jawa Aug 30, 2024 pm 04:28 PM

Panduan untuk Weka di Jawa. Di sini kita membincangkan Pengenalan, cara menggunakan weka java, jenis platform, dan kelebihan dengan contoh.

Nombor Smith di Jawa Nombor Smith di Jawa Aug 30, 2024 pm 04:28 PM

Panduan untuk Nombor Smith di Jawa. Di sini kita membincangkan Definisi, Bagaimana untuk menyemak nombor smith di Jawa? contoh dengan pelaksanaan kod.

Soalan Temuduga Java Spring Soalan Temuduga Java Spring Aug 30, 2024 pm 04:29 PM

Dalam artikel ini, kami telah menyimpan Soalan Temuduga Spring Java yang paling banyak ditanya dengan jawapan terperinci mereka. Supaya anda boleh memecahkan temuduga.

Cuti atau kembali dari Java 8 Stream Foreach? Cuti atau kembali dari Java 8 Stream Foreach? Feb 07, 2025 pm 12:09 PM

Java 8 memperkenalkan API Stream, menyediakan cara yang kuat dan ekspresif untuk memproses koleksi data. Walau bagaimanapun, soalan biasa apabila menggunakan aliran adalah: bagaimana untuk memecahkan atau kembali dari operasi foreach? Gelung tradisional membolehkan gangguan awal atau pulangan, tetapi kaedah Foreach Stream tidak menyokong secara langsung kaedah ini. Artikel ini akan menerangkan sebab -sebab dan meneroka kaedah alternatif untuk melaksanakan penamatan pramatang dalam sistem pemprosesan aliran. Bacaan Lanjut: Penambahbaikan API Java Stream Memahami aliran aliran Kaedah Foreach adalah operasi terminal yang melakukan satu operasi pada setiap elemen dalam aliran. Niat reka bentuknya adalah

TimeStamp to Date in Java TimeStamp to Date in Java Aug 30, 2024 pm 04:28 PM

Panduan untuk TimeStamp to Date di Java. Di sini kita juga membincangkan pengenalan dan cara menukar cap waktu kepada tarikh dalam java bersama-sama dengan contoh.

Program Java untuk mencari kelantangan kapsul Program Java untuk mencari kelantangan kapsul Feb 07, 2025 am 11:37 AM

Kapsul adalah angka geometri tiga dimensi, terdiri daripada silinder dan hemisfera di kedua-dua hujungnya. Jumlah kapsul boleh dikira dengan menambahkan isipadu silinder dan jumlah hemisfera di kedua -dua hujungnya. Tutorial ini akan membincangkan cara mengira jumlah kapsul yang diberikan dalam Java menggunakan kaedah yang berbeza. Formula volum kapsul Formula untuk jumlah kapsul adalah seperti berikut: Kelantangan kapsul = isipadu isipadu silinder Dua jumlah hemisfera dalam, R: Radius hemisfera. H: Ketinggian silinder (tidak termasuk hemisfera). Contoh 1 masukkan Jejari = 5 unit Ketinggian = 10 unit Output Jilid = 1570.8 Unit padu menjelaskan Kirakan kelantangan menggunakan formula: Kelantangan = π × r2 × h (4

Bagaimana untuk menjalankan aplikasi boot musim bunga pertama anda di Spring Tool Suite? Bagaimana untuk menjalankan aplikasi boot musim bunga pertama anda di Spring Tool Suite? Feb 07, 2025 pm 12:11 PM

Spring Boot memudahkan penciptaan aplikasi Java yang mantap, berskala, dan siap pengeluaran, merevolusi pembangunan Java. Pendekatan "Konvensyen Lebih Konfigurasi", yang wujud pada ekosistem musim bunga, meminimumkan persediaan manual, Allo

See all articles