Tôi có một ứng dụng Java tải xuống thông tin (Thực thể) từ máy chủ của chúng tôi. Tôi sử dụng chuỗi Tải xuống để tải xuống dữ liệu.Quản lý luồng và luồng ứng dụng Java
Dòng chảy của quá trình tải về như sau:
- Đăng nhập - Thực thể sử dụng được tải về
- Dựa trên Entity dùng, tải về một danh sách 'cộng đồng' thực thể và hiển thị trong danh sách thả xuống
- Dựa trên cộng đồng thả xuống lựa chọn, Tải về và hiển thị 'Org Tree' trong một JTree
- Dựa trên lựa chọn Node, tải loại thực thể và hiển thị trong danh sách thả xuống
- Dựa trên loại selecti trên, tải Sub Thể loại thực thể và hiển thị trong danh sách thả xuống
- Dựa trên Sub Thể loại lựa chọn tải một dữ liệu lớn thiết lập và lưu nó
Việc tải xuống trong một thread để GUI không 'đóng băng'. Nó cũng cho phép tôi cập nhật Progress Bar.
Tôi cần trợ giúp quản lý quy trình này. Vấn đề chính là khi tôi tải xuống dữ liệu thực thể, tôi phải tìm cách đợi chuỗi kết thúc trước khi cố gắng lấy thực thể và chuyển sang bước tiếp theo trong luồng ứng dụng.
Cho đến nay tôi đã sử dụng hộp thoại phương thức để kiểm soát luồng. Tôi bắt đầu các chủ đề, bật lên một phương thức và sau đó xử lý các phương thức khi thread được hoàn thành. Các phương thức/thread là Observer/Observable thread có một bộ thay đổi khi nó được hoàn thành và hộp thoại disposes. Hiển thị một phương thức có hiệu quả ngăn chặn luồng ứng dụng để nó có thể đợi cho quá trình tải xuống hoàn tất.
Tôi cũng đã thử chuyển tất cả luồng công việc sang Trình theo dõi. Tất cả các GUI có liên quan trong quá trình này là Observers. Mỗi phương thức cập nhật chờ cho quá trình tải xuống hoàn tất và sau đó gọi phần tiếp theo của GUI mà bản tải xuống của riêng nó.
Cho đến nay tôi đã tìm thấy hai phương pháp này tạo ra mã khó theo dõi. Tôi muốn 'tập trung' luồng công việc này để các nhà phát triển khác không rút tóc ra khi họ cố gắng theo dõi nó.
Câu hỏi của tôi là: Bạn có bất kỳ đề xuất/ví dụ nào trong đó luồng công việc như vậy có thể được quản lý theo cách tạo mã dễ theo dõi không?
Tôi biết 'dễ' là một thuật ngữ tương đối và tôi biết cả hai tùy chọn của tôi đã hoạt động nhưng tôi muốn nhận một số ý tưởng từ các lập trình viên khác trong khi vẫn còn thời gian để thay đổi.
Cảm ơn bạn rất nhiều.
Đã cập nhật liên kết để trỏ tới phiên bản Java hiện tại. – jzd