synchronized là gì

Đang xem: Synchronized là gì

Nội dung chính

Đồng bộ trong java Tại sao sử dụng Synchronization Vấn đề xảy ra khi không sử dụng đồng bộ Phương thức đồng bộ (synchronized method) Ví dụ về phương thức đồng bộ (synchronized method) Ví dụ về synchronized method sử dụng lớp nặc danh

Đồng bộ trong java

Đồng bộ trong java (Synchronization in java) là khả năng kiểm soát truy cập của nhiều luồng đến bất kỳ nguồn tài nguyên chia sẻ (shared resource).

Giả sử có nhiều luồng muốn truy cập cùng một biến cùng một thời điểm. Ví dụ một luồng muốn đọc, trong khi luồng khác cố gắng thay đổi dữ liệu dẫn dến dữ liệu bị sai lệch. Trong trường hợp này, Java Synchronization là lựa chọn tốt khi chúng ta muốn cho phép chỉ một luồng được truy cập vào tài nguyên chia sẻ đó.

Tại sao sử dụng Synchronization

Việc đồng bộ hóa chủ yếu được sử dụng để:

Để tránh sự can thiệp của luồng khác. Để đảm bảo vấn đề nhất quán của chương trình.

Vấn đề xảy ra khi không sử dụng đồng bộ

Trong ví dụ này, không có sự đồng bộ, vì vậy đầu ra không phù hợp. Hãy xem ví dụ:

class Table catch (Exception e) } } } class MyThread1 extends Thread public void run() } class MyThread2 extends Thread public void run() } public class TestSynchronization1 }

Output:

5 100 200 10 300 15 400 20 25 500

Phương thức đồng bộ (synchronized method)

Nếu bạn khai báo bất kỳ phương pháp nào với từ khóa synchronized, nó được gọi là phương thức đồng bộ.

Phương thúc đồng bộ được sử dụng để khóa một đối tượng cho bất kỳ tài nguyên được chia sẻ.

Khi một luồng gọi một phương thức đồng bộ, nó sẽ tự động khóa cho đối tượng đó và giải phóng nó khi luồng hoàn thành nhiệm vụ.

Ví dụ về phương thức đồng bộ (synchronized method)

class Table catch (Exception e) } } } class MyThread1 extends Thread public void run() } class MyThread2 extends Thread public void run() } public class TestSynchronization2 }

Output:

5 10 15 20 25 100 200 300 400 500

Ví dụ về synchronized method sử dụng lớp nặc danh

Trong chương trình sau đây, chúng ta đã tạo ra hai thread bằng lớp ẩn danh, do đó phải viết ít code hơn.

Xem thêm: The Sun And Moon Tarot Deck, Deck Overview: Sun & Moon Tarot

class Table catch (Exception e) } } } public class TestSynchronization3 }; Thread t2 = new Thread() }; t1.start(); t2.start(); } }
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
mister-map.com on facebook
Học Lập Trình Online Miễn Phí – mister-map.com
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 mister-map.com

Hệ thống bài học trên mister-map.com 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 mister-map.com đượ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

Xem thêm: Isotonic Là Gì – Nước Bù Điện Giải Là Gì

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

Related Posts