I am trying to find the differences between SwingWorker execute () vs doInBackground (). So I wrote this simple program to check the difference.
public static void main(String[] args) { // TODO code application logic here for(int i=0;i<10;i++){ try { new Worker().execute(); } catch (Exception ex) { Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex); } } } public static class Worker extends SwingWorker<Void,Void>{ @Override protected Void doInBackground() throws Exception { System.out.println("Hello"); return null; } }
When I run this program, I got the following exception:
Exception in thread "AWT-Windows" java.lang.IllegalStateException: Shutdown in progress at java.lang.ApplicationShutdownHooks.add(ApplicationShutdownHooks.java:39) at java.lang.Runtime.addShutdownHook(Runtime.java:192) at sun.awt.windows.WToolkit.run(WToolkit.java:281) at java.lang.Thread.run(Thread.java:619)
However, when I tried to use doInBackground ()
new Worker().doInBackground();
The program runs and prints the expected result. So what is my mistake? and should I use the doInBackground () method since I read that it should not be used.
thanks
source share