VietTuts

Tự Học Lập Trình Online

  • Home
  • Java
  • Servlet
  • JSP
  • Struts2
  • Hibernate
  • Spring
  • MyBatis
  • Java WS
  • C
  • C++
  • C#
  • Python
  • PHP
  • Excel
  • VBA
  • Web
    • JavaScript
    • JQUERY
    • JSON
    • AJAX
    • CSS
    • HTML
    • HTML5
    • Node.js
    • Angular 7
  • SQL
    • MySQL
    • SQL Server
  • Misc
    • Eclipse
    • Phần mềm tiện ích
    • Cấu trúc DL&GT
    • Selenium Test
Java Cơ Bản Các Khái Niệm Java OOPs Java String Xử Lý Ngoại Lệ Các Lớp Lồng Nhau

Đa Luồng (Multithreading)

Java Thread Đa luồng trong java Vòng đởi của Thread Tạo Thread Thread Scheduler Sleep một thread Start một thread hai lần Gọi phương thức run() Phương thức join() Đặt tên cho thread Mức ưu tiên của một Thread Luồng hiểm Thread Pool Thread Group Shutdown Hook Thực hiện nhiều task Garbage Collection Lớp Runtime

Java Synchronization

Phương thức synchronization Khối synchronized Đồng bộ static Deadlock trong java Giao tiep giua cac thread Interrupt một Thread
Java AWT Java Swing Java I/O Ví Dụ Java I/O Lập Trình Mạng Với Java Java Date Chuyển Đối Kiểu Dữ Liệu Java Collections Java JDBC Các Tính Năng Mới Trong Java Bài Tập Java Có Lời Giải Câu Hỏi Phỏng Vấn Java
1 / 3
❮ ❯

Luồng hiểm trong java


Mức ưu tiên của một Thread
Thread pool trong java

Luồng hiểm trong java (thread daemon) là một luồng cung cấp dịch vụ cho luồng người dùng. Thời gian sống của nó phụ thuộc vào các luồng người dùng. Tức là khi tất cả các luồng người dùng chết, JVM sẽ tự động chấm dứt luồng này.

Có nhiều luồng hiểm java chạy tự động, ví dụ: Gc, finalizer, v.v.

Bạn có thể xem tất cả các chi tiết bằng cách gõ jconsole trong dấu nhắc lệnh. Công cụ jconsole cung cấp thông tin về các lớp nạp, sử dụng bộ nhớ, các luồng đang chạy, v.v.

Nội dung chính

  • Các điểm cần nhớ về luồng hiểm trong java
    • Tại sao JVM kết thúc luồng hiểm nếu không có luồng người dùng?
    • Các phương thức của luồng hiểm
  • Ví dụ về luồng hiểm trong java

Các điểm cần nhớ về luồng hiểm trong java

  • Nó cung cấp dịch vụ cho các luồng người dùng.
  • Thời gian sống của nó phụ thuộc vào các luồng người dùng.
  • Nó là một luồng có mức ưu tiên thấp.

Tại sao JVM kết thúc luồng hiểm nếu không có luồng người dùng?

Mục đích duy nhất của luồng hiểm là nó cung cấp dịch vụ cho luồng người dùng cho các tác vụ nền background supporting task (background supporting task). Nếu không có luồng người dùng, tại sao JVM vấn tiếp tục chạy luồng này? Đó là lý do tại sao JVM kết thúc luồng hiểm nếu không có thread người dùng nào đang được thực thi.

Các phương thức của luồng hiểm

Lớp java.lang.Thread cung cấp hai phương thức cho luồng hiểm trong java.

No.Phương thứcMô tả
1)public void setDaemon(boolean status)Được sử dụng để đánh dấu luồng hiện tại là luồng hiểm hoặc luồng người dùng.
2)public boolean isDaemon()Được sử dụng để kiểm tra xem luồng hiện tại có phải là luồng hiểm không.

Ví dụ về luồng hiểm trong java

File: TestDaemonThread1.java

public class TestDaemonThread1 extends Thread {
    public void run() {
        if (Thread.currentThread().isDaemon()) { // check luong hiem
            System.out.println("luong hiem hoat dong");
        } else {
            System.out.println("luong nguoi dung hoat dong");
        }
    }

    public static void main(String[] args) {
        TestDaemonThread1 t1 = new TestDaemonThread1(); // tao thread
        TestDaemonThread1 t2 = new TestDaemonThread1();
        TestDaemonThread1 t3 = new TestDaemonThread1();

        t1.setDaemon(true);// cat dat t1 la luong hiem

        t1.start();// start cac thread
        t2.start();
        t3.start();
    }
}

Output:

luong hiem hoat dong
luong nguoi dung hoat dong
luong nguoi dung hoat dong
Lưu ý: Nếu bạn muốn tạo một luồng người dùng như một luồng hiểm, phải gọi phương thức setDaemon(true) trước khi start(), ngược lại sẽ xảy ra ngoại lệ IllegalThreadStateException.

File: TestDaemonThread2.java

class TestDaemonThread2 extends Thread {
    public void run() {
        System.out.println("Name: " + Thread.currentThread().getName());
        System.out.println("Daemon: " + Thread.currentThread().isDaemon());
    }

    public static void main(String[] args) {
        TestDaemonThread2 t1 = new TestDaemonThread2();
        TestDaemonThread2 t2 = new TestDaemonThread2();
        t1.start();
        t1.setDaemon(true);// xay ra ngoai le tai day
        t2.start();
    }
}

Output:

exception in thread main: java.lang.IllegalThreadStateException

Mức ưu tiên của một Thread
Thread pool trong java

Recent Updates

Xuất dữ liệu ra màn hình console trong JavaCài đặt môi trường JavaJava Swing - Bài tập quản lý sinh viên trong javaLinkedList trong javaArrayList trong javaBài tập java có lời giảiSử dụng Javascript trong HTMLToán tử dấu 2 chấm (::) trong Java 8Lambda Expression - Biểu thức Lambda trong java 8Bài tập Java - Sắp xếp nhanh (Quick Sort) trong JavaBài tập Java - Sắp xếp chèn (Insertion Sort) trong JavaBài tập Java - Sắp xếp nổi bọt (Bubble Sort) trong JavaSắp Tết 2026 Rồi! - Còn bao nhiêu ngày nữa là đến tết 2026?

VietTuts on facebook

Học Lập Trình Online Miễn Phí - VietTuts.Vn
Danh Sách Bài Học

Học Java | Hibernate | Spring
Học Excel | Excel VBA
Học Servlet | JSP | Struts2
Học C | C++ | C#
Học Python
Học SQL

Bài Tập Có Lời Giải

Bài tập Java
Bài tập C
Bài tập C++
Bài tập C#
Bài tập Python
Ví dụ Excel VBA

Câu Hỏi Phỏng Vấn

201 câu hỏi phỏng vấn java
25 câu hỏi phỏng vấn servlet
75 câu hỏi phỏng vấn jsp
52 câu hỏi phỏng vấn Hibernate
70 câu hỏi phỏng vấn Spring
57 câu hỏi phỏng vấn SQL

Scroll back to top

Copyright © 2016 VietTuts.Vn all rights reserved. | Liên hệ | Chính sách - riêng tư | sitemap.html | sitemap_index.xml