2009-12-02 6 views
27

Tôi đã được lập trình trong java một thời gian (5 năm), và tôi nghĩ rằng tôi có một sự hiểu biết tốt về hầu hết các khía cạnh của ngôn ngữ. Tuy nhiên, tôi nghĩ rằng tôi đã không làm việc với các chủ đề nhiều như tôi muốn.Dự án nhỏ để tìm hiểu các chủ đề Java

Điều gì sẽ là một dự án nhỏ tốt để tìm hiểu các chủ đề java sâu?

Bất kỳ đề xuất nào?

Cảm ơn

+0

Thực ra tôi thấy điều này là QUITE xây dựng. Gợi ý gợi ý – Chrips

Trả lời

18

Ứng dụng máy khách của khách hàng:

máy chủ chấp nhận kết nối trên ổ cắm và tạo chuỗi giao tiếp cho từng khách hàng.

đây có thể là trò chơi hoặc người quản lý tác vụ hoặc bất kỳ thứ gì bạn muốn.

Chỉnh sửa: tôi phát triển một ứng dụng eMule như thế này trong thời gian thực tập của tôi, nó rất dễ làm và bạn có thể khám phá tất cả các khía cạnh của chương trình chuỗi.

+2

+1 - một dự án cổ điển. Bạn sẽ tìm thấy rất nhiều đoạn trích, hướng dẫn và trợ giúp trên mạng (và trên SO). –

+0

Âm thanh như ý tưởng hay để thêm tính năng nhiều người chơi trực tuyến vào các trò chơi tôi đã mã hóa trong 2-3 tháng qua (pacman, checkers, tetris, v.v.). Tôi sẽ cố gắng thực hiện điều này trên Pac-Man, có thể một trình điều khiển trình phát cho mỗi con ma? (sẽ có thể nhàm chán, nhưng ít nhất tôi sẽ sử dụng các chủ đề sâu tôi đoán) –

+2

Hãy suy nghĩ về cách bạn sẽ thử nghiệm tính đa luồng của nó; nói cách khác, đảm bảo rằng bạn đã làm đúng. Việc có thể sử dụng một công cụ như JMeter để thực hiện máy chủ có thể giúp hiển thị một số vấn đề. – VoiceOfUnreason

4

Viết trình thu thập dữ liệu web !!

7

Một cách tuyệt vời để bắt đầu là triển khai sự cố Producer/Consumer. Điều này cho phép bạn xử lý việc khởi động nhiều luồng, đồng bộ hóa, khóa và xử lý cách thoát khỏi thực thi luồng. Một khi bạn đã làm được điều đó, bạn sẽ cần phải có một ý tưởng tốt về luồng Java (và luồng nói chung).

7

Tôi đã học các chủ đề bằng cách viết mô phỏng thang máy. Mỗi chủ đề là một đối tượng đại diện cho một thang máy trong một tòa nhà. Một cấu trúc riêng biệt có chứa "các nút nào đã được nhấn trên các tầng?"

Nó có thể không phải là một thực tế sử dụng - nó không có webcrawler - nhưng nó là một hoặc hai giờ, và bạn chắc chắn sẽ nắm bắt tốt hơn các chủ đề và đồng bộ hóa khi bạn đang thực hiện. Nếu bạn muốn dành nhiều thời gian hơn để lừa dối với điều này, tôi vẫn có thể thử một cái gì đó rất đơn giản đầu tiên, để có được đôi chân của bạn ướt.

+0

Giống như cuốn sách trong sách Deitel & Deitel? –

+0

@davidrobles: Tôi chưa bao giờ đọc toàn bộ cuốn sách Java Deitel2, và đã nhiều năm kể từ khi tôi nhìn thấy một cuốn C++ của họ, nhưng vâng, sẽ không ngạc nhiên chút nào nếu nó ở trong đó. –

8

Tôi đã viết một phiên bản java của PacMan. PacMan là chủ đề của riêng mình, cũng như mỗi Ghost. Mỗi con ma có thuật toán riêng để tìm PacMan.

+1

Tôi đã viết một Pac-Man là tốt, nhưng tôi không bao giờ sử dụng đề! Chỉ một cho toàn bộ trò chơi. Tôi sẽ cố gắng xem làm thế nào tôi có thể đặt chủ đề ở đó. –

3

Thử phát triển Hệ thống tin nhắn tức thì nơi nhiều người dùng kết nối với một máy chủ duy nhất. Đoạn trích dưới đây được lấy từ Dietel và Dietel - Java Cách lập trình Phiên bản thứ 6

Phòng chat đã trở nên phổ biến trên Internet. Chúng cung cấp vị trí trung tâm nơi người dùng có thể trò chuyện với nhau qua tin nhắn ngắn tin nhắn. Mỗi người tham gia có thể xem tất cả các thông báo mà người dùng khác đăng, và mỗi người dùng có thể đăng bài.

Với bài tập này, bạn có thể đặt 5 năm kinh nghiệm để thử nghiệm vì dự án nhỏ này không chỉ yêu cầu đa luồng, mà còn kết nối mạng và GUI. Ngoài ra, bạn cần phải sử dụng một kỹ thuật gọi là multicasting.

Ngoài ra, dự án mã nguồn mở việc sử dụng đa luồng là một nơi tốt để lấy cảm hứng và xem ví dụ thực tế về cuộc sống. Từ đó, bạn có thể tham gia hoặc bắt đầu dự án nguồn mở của riêng bạn.

Tất cả tốt nhất!

3

Bước đầu tiên, hãy xem xét triển khai Dining Phisolophers problem. Điều đó sẽ giới thiệu cho bạn nhiều cách khác nhau để bắt đầu luồng, xác định các công việc được phân đoạn và chia sẻ dữ liệu giữa các luồng.

Có nhiều giải pháp "chính xác" và nhiều nỗ lực nguy hiểm hơn. Bắt đầu khai thác sớm the java.util.concurrent packages sớm. Viết sai và khám phá những gì nó cần để làm cho nó chính xác.

3

Viết phần mềm trò chuyện qua P2P bằng TCP. Bạn sẽ cần phải biết về các lớp Java Networking và Streams, nhưng nó không quá khó khăn. Và việc học gói java.net rất đáng để thử!