openplanning

Hướng dẫn và ví dụ Java Channel

  1. Channel
  2. Interfaces and Classes
  3. Examples

1. Channel

Channel là một interface nằm trong package java.nio.channels, một thành phần quan trọng trong Java New IO (Java NIO). Như đã biết Java NIO được giới thiệu lần đầu tiên từ phiên bản Java 1.4 như một sự thay thế cho Java IO truyền thống nhằm mục đích nâng cao hiệu năng của chương trình.
  • Các hướng dẫn Java IO
Channel đại diện cho một kết nối mở với một thực thể như thiết bị phần cứng, file, socket hoặc các thành phần chương trình có khả năng thực hiện các hoạt động IO (Input/Output). Nói chung, để đọc hoặc ghi dữ liệu vào một thiết bị IO với Java NIO bạn phải mở một Channel.
  • Trường hợp đọc dữ liệu từ thiết bị IO: Dữ liệu sẽ được đọc từ Channel vào Buffer, bạn chỉ cần thao tác với Buffer để xử lý dữ liệu.
  • Trường hợp ghi dữ liệu vào thiết bị IO: Bạn cần ghi dữ liệu vào Buffer, sau đó nó sẽ được chuyển tới Channel và ghi vào thiết bị IO.
Buffer đóng vai trò như một bộ chứa dữ liệu tạm thời với sức chứa (capacity) cố định, vì vậy để đọc hoặc ghi toàn bộ dữ liệu vào thiết bị IO bạn phải thao tác với Buffer nhiều lần.
Channel vs Stream
Về cơ bản, khái niệm Channel (kênh) trong Java NIO là tương tự như khái niệm Stream (dòng chẩy) trong Java IO, nhưng có một vài khác biệt:
  • Bạn có thể vừa đọc vừa ghi vào một Channel. Trong khi đó với Stream, để đọc bạn cần một InputStream, để ghi bạn cần một OutputStream.
  • Channel có thể được đọc và ghi một cách không đồng bộ.
  • ChannelBuffer có sự kết nối với nhau. Bạn chỉ cần thao tác với Buffer để xử lý dữ liệu đọc được từ Channel, và chỉ cần thao tác với Buffer để ghi dữ liệu vào Channel.

2. Interfaces and Classes

Hệ thống phân cấp các interface trong package java.nio.channels.
Danh sách các lớp thi hành interface Channel:

3. Examples

Nếu bạn mới bắt đầu tìm hiểu về Java Channel, hãy tiếp tục với ReadableByteChannelWritableByteChannel để có các ví dụ đầu tiên.