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
    • HTML5
    • 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

Khối đồng bộ trong java


Phương thức đồng bộ trong java
Phương thức đồng bộ static

Khối đồng bộ trong java (Synchronized block) có thể được sử dụng để thực hiện đồng bộ hóa trên bất kỳ tài nguyên cụ thể nào của phương thức.

Giả sử có 50 dòng code trong phương thức, nhưng bạn chỉ muốn đồng bộ hóa 5 dòng, bạn có thể sử dụng khối đồng bộ.

Nếu bạn đặt tất cả các dòng code của phương thức trong khối đồng bộ, nó sẽ hoạt động giống như phương thức đồng bộ.

Các điểm cần nhớ về khối đồng bộ

  • Khối đồng bộ được sử dụng để khóa một đối tượng cho bất kỳ tài nguyên dùng chung nào.
  • Phạm vi của khối đồng bộ nhỏ hơn phương thức.

Khai báo để sử dụng khối đồng bộ:

synchronized (object reference expression) {   
    //code block   
}  

Nội dung chính

  • Ví dụ về khối đồng bộ
  • Ví dụ tương tự về về khối đồng bộ bởi việc sử dụng lớp nặc danh

Ví dụ về khối đồng bộ

Dưới đây là ví dụ đơn giản về khối đồng bộ trong java.

File: TestSynchronizedBlock1.java

class Table {
    void printTable(int n) {
        synchronized (this) {// Khoi dong bo (synchronized block)
            for (int i = 1; i <= 5; i++) {
                System.out.println(n * i);
                try {
                    Thread.sleep(400);
                } catch (Exception e) {
                    System.out.println(e);
                }
            }
        }
    }// Ket thuc phuong thuc
}

class MyThread1 extends Thread {
    Table t;

    MyThread1(Table t) {
        this.t = t;
    }

    public void run() {
        t.printTable(5);
    }

}

class MyThread2 extends Thread {
    Table t;

    MyThread2(Table t) {
        this.t = t;
    }

    public void run() {
        t.printTable(100);
    }
}

public class TestSynchronizedBlock1 {
    public static void main(String args[]) {
        Table obj = new Table();// tao object duy nhat
        MyThread1 t1 = new MyThread1(obj);
        MyThread2 t2 = new MyThread2(obj);
        t1.start();
        t2.start();
    }
}

Output:

5
10
15
20
25
100
200
300
400
500

Ví dụ tương tự về về khối đồng bộ bởi việc sử dụng lớp nặc danh

Dưới đây là ví dụ đơn giản về khối đồng bộ trong java sử dụng lớp nặc danh.

File: TestSynchronizedBlock2.java

class Table {
    void printTable(int n) {
        synchronized (this) { // khoi dong bo (synchronized block)
            for (int i = 1; i <= 5; i++) {
                System.out.println(n * i);
                try {
                    Thread.sleep(400);
                } catch (Exception e) {
                    System.out.println(e);
                }
            }
        }
    } // Ket thuc phuong thuc
}

public class TestSynchronizedBlock2 {
    public static void main(String args[]) {
        final Table obj = new Table();// tao object duy nhat

        Thread t1 = new Thread() {
            public void run() {
                obj.printTable(5);
            }
        };
        Thread t2 = new Thread() {
            public void run() {
                obj.printTable(100);
            }
        };

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

Output:

5
10
15
20
25
100
200
300
400
500

Phương thức đồng bộ trong java
Phương thức đồng bộ static

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