Tôi có một ứng dụng mà khi có thống kê "trò chơi", nó bắt đầu một vài chủ đề khác nhau. Tôi bắt đầu đề như vậy:Thực hành tốt cho đa luồng
Thread thread = new Thread(new Runnable()
{
public void run()
{
//...
}
});
thread.setName("killMeAtEnd");
thread.start();
Sau khi trận đấu kết thúc tôi có một phương pháp xử lý() bên trong trò chơi mà sắp xếp thông qua tất cả các chủ đề chạy và kết thúc tất cả các chủ đề có tên "killMeAtEnd" . Câu hỏi của tôi là, thực hành tốt này? Ý định của tôi là giữ cho ứng dụng của tôi chạy nhanh và lộn xộn miễn phí, theo kinh nghiệm của tôi Chỉ còn lại "treo" có xu hướng làm chậm điện thoại cho đến khi ứng dụng bị chấm dứt. Có cách nào tốt hơn để làm điều này? Điều này thậm chí có đáng làm phiền không?
EDIT:
Đây là tôi dispose()
nếu có ai đã quan tâm. Mã này nằm trong lớp Game.
public void dispose()
{
Thread threads[] = (Thread[])Thread.getAllStackTraces().keySet().toArray();
for(int x=0;x<threads.length;x++)
{
Thread thread = threads[x];
if(thread.getName().equalsIgnoreCase(KILL))
{
try
{
thread.interrupt();
}catch(Exception e){Log.e(Viewer.GAME,Log.getStackTraceString(e));}
thread = null;
}
}
}
public static final String KILL = "endOnDispose";
Bắt stacktraces là khá tốn kém vì vậy nó sẽ có hiệu quả hơn nếu bạn sẽ lưu 'chủ đề []' trong khi bạn tạo ra các chủ đề và làm cho nó 'vứt bỏ (Thread [] chủ đề)'. Có chủ đề nào khác tiếp tục chạy khi trò chơi của bạn kết thúc hoặc là để ngăn bạn giết chết chuỗi giao diện người dùng không? – zapl
Khi "trò chơi" kết thúc Hoạt động không kết thúc, nó sẽ chuyển sang mục khác. – John