Hướng dẫn và ví dụ Java Channel
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ộ.
- Channel và Buffer 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.
- Buffer
- Selector
- AsynchronousChannel
- AsynchronousByteChannel
- ReadableByteChannel
- ScatteringByteChannel
- InterruptibleChannel
- ByteChannel
- SelectableChannel
- WritableByteChannel
- GatheringByteChannel
- NetworkChannel
- MulticastChannel
Danh sách các lớp thi hành interface Channel:
- SocketChannel
- DatagramChannel
- ServerSocketChannel
- AsynchronousSocketChannel
- AsynchronousServerSocketChannel
- FileChannel
- AsynchronousFileChannel
- SelectableChannel
- Pipe.SinkChannel
- Pipe.SourceChannel
- SctpChannel
- SctpMultiChannel
- SctpServerChannel
Các hướng dẫn Java New IO
- Hướng dẫn và ví dụ Java ReadableByteChannel
- Hướng dẫn và ví dụ Java WritableByteChannel
- Hướng dẫn và ví dụ Java Pipe.SinkChannel
- Hướng dẫn và ví dụ Java Pipe.SourceChannel
- Hướng dẫn và ví dụ Java ScatteringByteChannel
- Hướng dẫn và ví dụ Java GatheringByteChannel
- Hướng dẫn và ví dụ Java Buffer
- Hướng dẫn và ví dụ Java DatagramChannel
- Hướng dẫn và ví dụ Java Channel
Show More
- Hướng dẫn lập trình Java Servlet/JSP
- Java cơ bản
- Các hướng dẫn Java Date Time
- Các hướng dẫn Struts2 Framework
- Các hướng dẫn Java Oracle ADF
- Các hướng dẫn Java Collections Framework
- Các hướng dẫn Java Web Services
- Các hướng dẫn Spring Cloud
- Các hướng dẫn Java IO
- Các thư viện mã nguồn mở Java
- Các hướng dẫn Spring Boot