Sự khác biệt giữa I / O dựa trên kênh và I / O dựa trên luồng trong java là gì?


21

Sự khác biệt giữa Đầu vào dựa trên luồng và Đầu vào dựa trên kênh là gì? API java cung cấp cả gói dựa trên luồng trong gói "java.io" và dựa trên kênh trong gói "java.nio". Cái nào trong hai cái tốt hơn trong hiệu năng và giảm lỗi thời gian chạy?


bạn đã kiểm tra wiki thẻ 'nio' tại Stack Overflow chưa? "NIO là viết tắt của 'I / O mới'. Nó được giới thiệu trong JDK 1.4 trong gói java.nio. Nó bao gồm một số yếu tố: ..."
gnat

1
Đây là một câu hỏi hay, 10 năm trước ... câu trả lời ngắn gọn là tùy thuộc , có rất nhiều tài liệu mở rộng về thời điểm sử dụng công nghệ nào, cả hai vẫn ở xung quanh vì chúng tốt hơn ở những thứ khác nhau. Google trả lời dài có mọi thứ bạn cần biết.

Tôi nghĩ rằng điều này phục vụ như một câu hỏi cổng tốt. OP là một trong số 10.000 may mắn ngày nay .
Gary Rowe

Theo stackoverflow.com/questions/2810156/con accept -channel- vs -stream - kênh được định hướng thông điệp trong khi luồng được định hướng theo byte và có thể không biết cách phân chia các thông điệp. Một điểm khác biệt nữa là các kênh lưu trữ tin nhắn trong khi các luồng không.
inf3rno

Câu trả lời:


13

Xem bài đăng trên blog của Oracle này để biết tổng quan tốt

Cũng đừng bỏ qua việc đọc các API NIO.2 của Java 7!

Về mặt hiệu suất, vv, câu trả lời là "nó phụ thuộc". Nó phụ thuộc vào đặc điểm của I / O của bạn, ví dụ như kích thước, đó là 'hình dạng', cho dù đó là Mạng hoặc đĩa hoặc trong bộ nhớ hoặc ....


8
Tại đây, liên kết đến kho lưu trữ: web.archive.org/web/20140528182031/https://bloss.oracle.com/slc/ trộm - Đó là lý do tại sao câu trả lời ở đây sẽ có thể hoạt động mà không cần liên kết của họ btw
piegames
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.