CountDownLatch được sử dụng để đảm bảo rằng một tác vụ chờ các Thread khác hoàn thành trước khi nó bắt đầu thực thi. Khi chúng ta tạo ra một đối tượng của CountDownLatch, chúng ta chỉ định số lượng các Thread cần chờ đợi, tất cả các Thread đó được yêu cầu phải đếm […]
Sử dụng Fork/Join Framework với ForkJoinPool trong Java
Giới thiệu Fork/ Join Fork/ Join Framework được thêm vào Java 7. Nó cung cấp các công cụ giúp tăng tốc xử lý song song bằng cách cố gắng sử dụng tất cả các lõi bộ xử lý có sẵn, được thực hiện thông qua cách tiếp cận phân chia (fork) và gộp (join) task. Mục đích […]
Lập trình đa luồng với Callable và Future trong Java
Trong bài viết Lập trình đa luồng trong Java các bạn đã biết được 2 cách để tạo một Thread trong Java: tạo 1 đối tượng của lớp được extend từ class Thread hoặc implements từ interface Runnable. Trong bài viết này tôi giới thiệu với các bạn một cách khác để tạo Thread, đó là Callable trong Java với khả năng trả về kết quả Future<T> […]
Hướng dẫn tạo và sử dụng ThreadPool trong Java
Giới thiệu ThreadPool Xét về hiệu suất, tạo ra một Thread mới là một hoạt động tốn kém bởi vì nó đòi hỏi hệ điều hành cung cấp tài nguyên để có thể thực thi task (tác vụ). Trên thực tế, ThreadPool được sử dụng cho các ứng dụng quy mô lớn khởi chạy rất […]
Đồng bộ hóa các luồng trong Java
Trong bài trước tôi đã giới thiệu với các bạn các kiến thức cơ bản về Lập trình đa luồng trong Java. Trong bài này chúng ta tiếp tục tìm hiểu về vấn đề đồng bộ hóa giữa các luồng trong Java, cơ chế hoạt động và cách thức giao tiếp giữa các luồng. Đối […]
Luồng Daemon (Daemon Thread) trong Java
Luồng Daemon (Daemon Thread) là gì? Java chia thread làm 2 loại: một loại thông thường và Daemon Thread. Chúng chỉ khác nhau ở cách thức ngừng hoạt động. Trong một chương trình các luồng thông thường và luồng Daemon chạy song song với nhau. Khi tất cả các luồng thông thường kết thúc, mọi luồng Daemon cũng sẽ bị kết […]
Lập trình đa luồng trong Java (Java Multi-threading)
Giới thiệu Thread là gì? Multi-thread là gì? Thread (luồng) về cơ bản là một tiến trình con (sub-process). Một đơn vị xử lý nhỏ nhất của máy tính có thể thực hiện một công việc riêng biệt. Trong Java, các luồng được quản lý bởi máy ảo Java (JVM). Multi-thread (đa luồng) là một […]
Integer Constant Pool trong Java
Trong bài viết hướng dẫn sử dụng Java String, StringBuffer và StringBuilder các bạn đã biết khi String được tạo bằng cách sử dụng literal thì nó được quản lý trong String Constant Pool. Vậy với kiểu Integer có Integer Contant Pool để quản lý các đối tượng như String Constant Pool không? Chúng ta sẽ cùng […]