У меня есть JFrame, который показывает содержимое предварительного просмотра, так как загрузка данных предварительного просмотра может занять несколько раз, я решил поместить операцию загрузки в SwingWorker, вот пример кода:
public void setPreviewContent(final String content) {
SwingWorker<Void, Void> worker = new SwingWorker<Void, Void>() {
@Override
protected Void doInBackground() throws Exception {
frame.setCursor(java.awt.Cursor.getPredefinedCursor(
java.awt.Cursor.WAIT_CURSOR));
//DO My Work
return null;
}
@Override
protected void done() {
frame.setCursor(java.awt.Cursor.getPredefinedCursor(
java.awt.Cursor.DEFAULT_CURSOR));
}
};
worker.execute();
}
Мой кадр инициализируется каждый раз, когда отображается, и удаляется каждый раз, когда закрывается:
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
После инициализации и показа этого метода setPreviewContent()
вызывается, и он работает правильно, единственная проблема заключается в том, что каждый раз, когда я закрываю и открываю кадр предварительного просмотра, создается поток демонов, который остается запущенным:
![Threads Leak](https://i.stack.imgur.com/pc2jg.png)
Как вы видите, огромное количество потоков остается в рабочем состоянии, вызывая утечку.
Как я могу решить проблему?
Если я использую стандартную тему, у меня нет этой проблемы ...