java - SwingWorker hangs at Unsafe.park() -


i have swingworker communicates server in background , updates jframe. debugging app , noticed after swingworker finished work, thread still remained. hanging @ unsafe.park(java.lang.object) native method. looked in further , found other swingworkers in app same thing after finish. can provide source code if wants don't think necessary because problem seems general.

update

i ran app without debugger , problem still happening. dump of swingworker thread:

"swingworker-pool-2-thread-1" daemon prio=6 tid=0x03219800 nid=0xd74 waiting on condition [0x04b7f000]    java.lang.thread.state: waiting (parking)         @ sun.misc.unsafe.park(native method)         - parking wait  <0x22ec63d8> (a java.util.concurrent.locks.abstra ctqueuedsynchronizer$conditionobject)         @ java.util.concurrent.locks.locksupport.park(unknown source)         @ java.util.concurrent.locks.abstractqueuedsynchronizer$conditionobject .await(unknown source)         @ java.util.concurrent.linkedblockingqueue.take(unknown source)         @ java.util.concurrent.threadpoolexecutor.gettask(unknown source)         @ java.util.concurrent.threadpoolexecutor.runworker(unknown source)         @ java.util.concurrent.threadpoolexecutor$worker.run(unknown source)         @ java.lang.thread.run(unknown source) 

i made sample program uses swingworker way used in application. program has same problem. here code:

package swingworkerlocktest;  import java.util.list; import javax.swing.jframe; import javax.swing.jtextarea; import javax.swing.swingworker;  public class swingworkerlocktest {      public static void main(string[] args) {         final jframe frame = new jframe("frame");         final jtextarea outputarea = new jtextarea(4, 20);         frame.setdefaultcloseoperation(jframe.exit_on_close);         frame.add(outputarea);         frame.pack();         frame.setvisible(true);         (new swingworker<object, string>() {             @override             protected object doinbackground() throws exception {                 publish("background task.");                 return null;             }              @override             protected void process(list<string> chunks) {                 (string str : chunks) {                     outputarea.append(str + "\n");                 }             }              @override             protected void done() {                 outputarea.append("background task finished.");             }         }).execute();     } } 

this normal behavior of swingworker, thread should terminate after 10 minutes if idle. it's explained here


Comments

Popular posts from this blog

c# - SVN Error : "svnadmin: E205000: Too many arguments" -

c# - Copy ObservableCollection to another ObservableCollection -

All overlapping substrings matching a java regex -