Tôi đã tự hỏi đó sẽ là phương pháp hiệu quả nhất để thực hiện một số loại tác vụ nền trong java (tôi đoán đó sẽ là một số loại Chủ đề không chặn). Để chính xác hơn - Tôi có một số mã java và sau đó tại một số điểm tôi cần phải thực hiện một hoạt động chạy dài. Những gì tôi muốn làm là để thực hiện hoạt động đó trong nền để phần còn lại của chương trình có thể tiếp tục thực hiện và khi công việc đó được hoàn thành, chỉ cần cập nhật một số đối tượng cụ thể đó. Thay đổi này sau đó sẽ được phát hiện bởi các thành phần khác.tác vụ nền java
Trả lời
Bạn nên sử dụng Pools Chủ đề,
http://java.sun.com/docs/books/tutorial/essential/concurrency/pools.html
ý tưởng Naïve: bạn có thể có thể tạo chủ đề, cung cấp cho nó một ưu tiên thấp, và thực hiện một vòng lặp của:
- làm một chút công việc
- sử dụng năng suất hoặc ngủ để cho chủ đề khác làm việc trong song song
điều đó sẽ phụ thuộc vào những gì bạn thực sự muốn làm trong chủ đề của bạn
bạn muốn thực hiện một chủ đề mới; tùy thuộc vào cách dài phương pháp này cần phải được, bạn có thể làm cho nó inline:
// some code
new Thread(new Runnable() {
@Override public void run() {
// do stuff in this thread
}
}).start();
Hoặc chỉ cần thực hiện một lớp mới:
public class MyWorker extends Thread {
public void run() {
// do stuff in this thread
}
}
// some code
new MyWorker().start();
Vâng, bạn sẽ muốn quay hoạt động tắt theo chủ đề riêng của nó. Thêm chủ đề mới có thể hơi nguy hiểm nếu bạn không cẩn thận và biết điều đó có nghĩa là gì và tài nguyên sẽ tương tác như thế nào. Dưới đây là một số tốt introduction to threads để giúp bạn bắt đầu.
Make a thread. Đánh dấu chủ đề này là Daemon. JVM thoát khi luồng chỉ chạy là tất cả các chuỗi daemon.
- 1. Hủy tác vụ nền
- 2. Nền nút thanh tác vụ
- 3. android: chạy tác vụ nền bằng AlarmManager
- 4. Thực hiện tác vụ nền trong Javascript
- 5. Mô phỏng tác vụ nền trên AppHarbor
- 6. Cách tạo tác vụ nền trước?
- 7. Lỗi Visual Studio: "Không thể kích hoạt tác vụ nền. Không thể kích hoạt tác vụ nền."
- 8. Lập lịch tác vụ trong Spring/Java
- 9. Bắt đầu tác vụ nền thời gian dài
- 10. Khởi động các tác vụ nền với Capistrano
- 11. Chạy tác vụ nền ngắn ngủi từ MVC
- 12. Chạy một tác vụ chạy nền hữu hạn dài
- 13. Thực hiện tác vụ ở chế độ nền trong JavaFX
- 14. Sử dụng tệp ứng dụng resw từ tác vụ nền
- 15. Ngăn tác vụ nền dispatch_after() bị thi hành
- 16. Không gọi được doBecomeActive nếu tác vụ nền hết hạn
- 17. Xóa mục thanh tác vụ nền màu xanh
- 18. Tác vụ phụ LongRunning tác vụ?
- 19. Nhiệm vụ nền trên appengine
- 20. Rx và tác vụ - hủy tác vụ đang chạy khi tác vụ mới được sinh ra?
- 21. Thanh tiến trình thanh tác vụ Windows 7 trong Java
- 22. trợ giúp với tệp kiến - classpath cho tác vụ Java
- 23. Cách lên lịch một tác vụ định kỳ trong Java?
- 24. Biểu tượng nút tác vụ mặc định trong Java
- 25. Dừng một tác vụ java song song với ant
- 26. Đầu vào tác vụ so với các nguồn tác vụ
- 27. Thao tác: Spacing và nền
- 28. Chạy profiler trên tác nhân nền
- 29. tác vụ runJar gradle?
- 30. Tác vụ echo MSBuild?
Vâng, đây là những gì tôi đang tìm kiếm, cụ thể hơn là Executors, .. Cảm ơn. – markovuksanovic
Bạn có thể đưa ra câu trả lời của riêng bạn về những người thực thi. Tôi sắp hỏi một câu hỏi rất giống nhau. Tôi nghĩ rằng các công tố viên nên được đề cập như một câu trả lời cụ thể. Tôi sẽ cho nó một upvote. Tôi không muốn đặt câu trả lời vào điểm ăn cắp. Đặc biệt khi JEE không khuyến khích sinh sản các Chủ đề mới. – Wes