VietTuts

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

  • Home
  • Java
  • Servlet
  • JSP
  • Struts2
  • Hibernate
  • Spring
  • MyBatis
  • Java WS
  • C
  • C++
  • Python
  • PHP
  • Eclipse
  • VBA
  • Web
    • JavaScript
    • JQUERY
    • JSON
    • AJAX
    • CSS
    • HTML
    • Node.js
    • Angular 7
  • SQL
    • MySQL
    • SQL Server
  • Misc
    • Phần mềm tiện ích
    • Cấu trúc dữ liệu và giải thuật
    • Học lập trình C#
    • 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

Thực hiện nhiều task


Shutdown Hook trong java
Garbage Collection trong java

Nội dung chính

  • Làm thế nào để thực hiện task duy nhất bởi nhiều thread?
  • Cách thực hiện nhiều task bằng nhiều thread
    • Ví dụ tương tự như ở trên bởi lớp nặc danh extends lớp Thread:
    • Ví dụ tương tự như ở trên bởi lớp nặc danh implements Runnable interface:

Làm thế nào để thực hiện task duy nhất bởi nhiều thread?

Nếu bạn phải thực hiện task duy nhất bởi nhiều thread, chỉ có một phương thức run(). Ví dụ:

Chương trình thực hiện một task bằng nhiều thread

File: TestMultitasking1.java

public class TestMultitasking1 extends Thread {
    public void run() {
        System.out.println("task one");
    }

    public static void main(String args[]) {
        TestMultitasking1 t1 = new TestMultitasking1();
        TestMultitasking1 t2 = new TestMultitasking1();
        TestMultitasking1 t3 = new TestMultitasking1();

        t1.start();
        t2.start();
        t3.start();
    }
}

Output:

task one
task one
task one

Chương trình thực hiện một task bằng nhiều thread

File: TestMultitasking2.java

public class TestMultitasking2 implements Runnable {
    public void run() {
        System.out.println("task one");
    }

    public static void main(String args[]) {
        // passing annonymous object of TestMultitasking2 class
        Thread t1 = new Thread(new TestMultitasking2());
        Thread t2 = new Thread(new TestMultitasking2());

        t1.start();
        t2.start();
    }
}

Output:

task one
task one

Chú ý: Mỗi thread chạy trong một callstack riêng biệt.

callstack

Cách thực hiện nhiều task bằng nhiều thread

Nếu bạn phải thực hiện nhiều nhiệm vụ bởi nhiều luồng, có nhiều phương thức run(). Ví dụ:

Chương trình thực hiện hai nhiệm vụ theo hai luồng

File: TestMultitasking3.java

class Simple1 extends Thread {
    public void run() {
        System.out.println("task one");
    }
}

class Simple2 extends Thread {
    public void run() {
        System.out.println("task two");
    }
}

public class TestMultitasking3 {
    public static void main(String args[]) {
        Simple1 t1 = new Simple1();
        Simple2 t2 = new Simple2();

        t1.start();
        t2.start();
    }
}

Output:

task one
task two

Ví dụ tương tự như ở trên bởi lớp nặc danh extends lớp Thread:

Chương trình thực hiện hai nhiệm vụ theo hai luồng

File: TestMultitasking4.java

public class TestMultitasking4 {
    public static void main(String args[]) {
        Thread t1 = new Thread() {
            public void run() {
                System.out.println("task one");
            }
        };
        Thread t2 = new Thread() {
            public void run() {
                System.out.println("task two");
            }
        };

        t1.start();
        t2.start();
    }
}

Output:

task one
task two

Ví dụ tương tự như ở trên bởi lớp nặc danh implements Runnable interface:

Chương trình thực hiện hai nhiệm vụ theo hai luồng

File: TestMultitasking5.java

public class TestMultitasking5 {
    public static void main(String args[]) {
        Runnable r1 = new Runnable() {
            public void run() {
                System.out.println("task one");
            }
        };

        Runnable r2 = new Runnable() {
            public void run() {
                System.out.println("task two");
            }
        };

        Thread t1 = new Thread(r1);
        Thread t2 = new Thread(r2);

        t1.start();
        t2.start();
    }
}

Output:

task one
task two

Shutdown Hook trong java
Garbage Collection trong java

Recent Updates

Toá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 JavaBài tập quản lý sinh viên trong JavaHashSet trong javaHashMap trong javaLớp WindowAdapter trong Java SwingLớp MouseMotionAdapter trong Java SwingLớp MouseAdapter trong Java SwingLớp KeyAdapter trong Java Swing

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
Học servlet
Học jsp
Học Hibernate
Học Struts2
Học Spring
Học SQL

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

About VietTuts.Vn

Hệ thống bài học trên VietTuts.Vn bao gồm các bài lý thuyết và thực hành về các công nghệ java và công nghệ web. Các bài lý thuyết trên hệ thống VietTuts.Vn được tham khảo và tổng hợp từ các trang http://javatpoint.com, http://www.tutorialspoint.com, http://docs.oracle.com/en …

Scroll back to top

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