1.Java NIO

Là API cung cấp các khả năng xuất nhập dữ liệu giữa chương trình và bên ngoài, được cải tiến từ API Java IO cũ để cũng cấp hiệu năng cao hơn.

2.Block – oriented I/O

Là phương thức vào/ra dữ liệu trong đó làm việc với các khối dữ liệu (1 dãy nhiều byte dữ liệu)

3.Buffer

Buffer (chính xác là data buffer) là 1 nơi chứa tạm 1 lượng dữ liệu trong khi dữ liệu đang tiếp tục truyền từ nơi này đến nơi khác.

Trong Java NIO, buffer được quản lý bởi đối tượng Buffer (của class java.nio.Buffer). Buffer là 1 class trừu tượng, các buffer của các class con sẽ tương ứng với các kiểu dữ liệu nguyên thủy (trừ kiểu Boolean- không có BooleanBuffer).

Các method quan trọng: position, capacity, clear, put, get

4.Buffer trực tiếp

Là loại buffer mà việc cấp phát bộ nhớ được thực hiện theo 1 cách giúp tăng tốc độ vào ra dữ liệu: tránh việc copy nội dung sang/từ 1 buffer trung gian

5.Memory-mapped file

Memory mapped file là 1 phân đoạn trong bộ nhớ ảo mà ánh xạ trực tiếp từng byte với 1 tài nguyên dạng file hoặc 1 phần của 1 tài nguyên dạng file. (Tài nguyên dạng file có thể là file, thư mục, thiết bị v.v…)

6.Persisted memory-mapped file

Là loại memory-mapped file mà gắn với 1 file lưu trữ trong bộ nhớ thứ cấp (đĩa). Khi kết thúc tiến trình, nội dung sẽ được lưu.

7.Non-persisted memory-mapped file

Là loại memory-mapped file mà không gắn với 1 file lưu trữ trong bộ nhớ thứ cấp (đĩa). Khi kết thúc tiến trình,nội dung sẽ mất và vùng nhớ được giải phóng

8.Memory-mapped file I/O

Là phương pháp vào ra dữ liệu sử dụng memory-mapped file.

Ưu điểm: nhanh
Nhược điểm: nếu lạm dụng sẽ chiếm nhiều bộ nhớ và tốn thời gian khởi tạo

Áp dụng: FileChannel.map() trả về MappedByteBuffer

9. Rải/gom

Rải/gom là 1 một phương pháp đọc ghi dữ liệu dùng nhiều buffer thay vì chỉ 1 buffer.

10.Channel

Channel là thuật ngữ dùng để mô tả sự kết nối trao đổi dữ liệu (có thể hai chiều) giữa điểm này và điểm khác.

Channel hoạt động kết hợp với Buffer

Trong Java NIO, channel được quản lý bởi các đối tượng channel (dẫn xuất từ interface java.nio.channels.Channel). Các đối tượng channel tương tự các đối tượng stream nhưng điểm khác biệt lớn nhất là nó có tính 2 chiều,có thể đọc và ghi đồng thời (nếu nó implement các interface cho phép đọc và cho phép ghi)..

11. Multiplexing (Muxing)

Là phương thức truyền thông trong đó nhiều tín hiệu/dữ liệu được kết hợp truyền chung trên 1 phương tiện

12.Phép khóa file (File locking)

Là cơ chế giới hạn truy cập (đọc/ghi) file, user/process/thread/transaction nào được đọc hay ghi vào 1 thời điểm nhất định nào đó

Tuy nhiên, nếu áp dụng không đúng, có thể dẫn đến sụt giảm hiệu năng hoặc dẫn đến hiện tượng deadlock (các bên chờ đợi lẫn nhau và mãi không có quyền truy cập tài nguyên)

13.Phép khóa file một cách bắt buộc (mandatory file locking):

Là phép khóa file mà chỉ đơn thuần ngăn cản việc đọc/ghi 1 file một cách bắt buộc (chỉ có một là được đọc/ghi, hai là không được đọc/ghi).

14.Phép khóa file một cách khuyến nghị (advisory file locking):

Là phép khóa file mà điều phối linh hoạt quyền đọc/ghi 1 file bằng các giao nhận các khóa (gồm 2 loại: khóa loại trừ và khóa được chia sẻ). Như vậy thì 1 file đang được đọc bởi 1 process có thể cho phép một tiến trình khác đọc cùng nhưng cấm tiến trình khác đó ghi.

15. Khóa loại trừ (exclusive lock)

Khóa loại trừ, đôi khi gọi là khóa ghi là loại khóa mà chỉ có duy nhất 1 bên được nhận tại 1 thời điểm nhất định bất kỳ, nó dùng để tránh xung đột khi ghi.

16. Khóa được chia sẻ (shared lock)

Khóa được chia sẻ, đôi khi gọi là khóa đọc là loại khóa mà cho phép nhiều bên cùng được nhận nếu như tài nguyên không có bên nào ghi (hoặc đợi ghi), nó dùng để bảo đảm tính toàn vẹn khi đọc.

17.Blocking

Một tiến trình gọi là bị block khi nó phải chờ 1 sự kiện nào đó xảy ra, chẳng hạn như sự sẵn sàng của 1 tài nguyên (CPU, bộ nhớ, đĩa, mạng v.v…) hoặc sự hoàn tất của 1 thao tác vào ra dữ liệu nào đó.

18.Asynchronous I/O

Là phương pháp vào ra dữ liệu mà cho phép các tiến trình có thể thực vào-ra dữ liệu mà không bị block

Ưu điểm: Hiệu quả

Nhược điểm: Khó thiết kế, cần thận trọng khi lập trình

19.Callback

Là một khái niệm chung chỉ đoạn mã chạy được mà được sử dụng làm đối số trong một đoạn mã khác, với dự định sẽ gọi nó vào 1 thời điểm thích hợp.

20.Synchronous Callback (còn gọi là blocking callback)

Là loại callback mà được thực hiện ngay

21.Asynchronous Callback (còn gọi là deferred callback)

Là loại callback mà chờ 1 sự kiện xảy ra thì thực hiện

22.Event handler

Là một khái niệm chung chỉ 1 asynchronous callback được gọi để phản ứng trước 1 sự kiện nào đó