Thread Blocking..help

Hi All,
I'm finding it hard to understand the concept of Threads blocking, for example, when u have a UI u'll want to run your main work in a different thread than in the event dispatcher thread as that will speed things up with the GUI.
now let's say we have the following code:
//Thread to prevent blocking and return control to GUI
Runnable r = new Runnable() {
public void run() {
try
ThreadThatDoesAlotOfWork.start();
} catch (Exception e)
e.printStackTrace();
if I'll run it within a another thread within the GUI, howcome it doesn't block till all work is done?
could u provide some code for blocking/non blocking threads..
can u direct me maybe to helpfull docs somewhere..
Thanks for the help and hope I'm being clear with my question..

That article is about synchronisation access to variables by mutiple threads.
I'm talking about using Threads for speeding things up...
Thanks for the reply anyway..

Similar Messages

  • Thread blocking on java.nio.charset.CoderResult

    Hello all,
    I have a multi-threaded app which does some fairly intestive string operations (basically extracts text from documents for indexing a search system).
    I am seeing a massive bottleneck around the java.nio.charset.CoderResult class. When profiling, I see a whole stack of threads blocking on (waiting for) a monitor on this java.nio.charset.CoderResult class. Seems to be a result of string encoding/decoding (I am often encoding strings as UTF-8).
    Anyone know why the JVM would want my threads to sync on this class? It's creating a huge performance issue for my app. Approximately 15% of ALL the processing time is spent waiting for this class.
    Help!

    I would guess that you're using some of the static methods in the CoderResult class. The static methods CoderResult.unmappableCache(), CoderResult.malformedForLength() and CoderResult.malformedCache all use a static inner class called Cache. Its get() method is synchronized on Cache.class. Since the Cache inner-class is static, any part of your multi-threaded application that goes through the Cache.get() method is going to be waiting for the lock on Cache.class.
    Could you create a CoderResult instance for each thread? That would mean that there would be a different static Cache class for each thread, reducing the number of threads competing for the Cache.class lock.
    I'd have to see some of your code to give a better answer.
    Brian

  • Thread blocked in printStackTrace

    I find one of my thread blocked in printStackTrace after perform an overload test. But it doesn't wait any java lock. So I don't know what happened.
    Part of dumped thread stack looked like this:
    "Thread: 553" daemon prio=5 tid=0x00598f68 nid=0x23f runnable [95d7f000..95d7fc28]
         at java.lang.Throwable.getStackTraceElement(Native Method)
         at java.lang.Throwable.getOurStackTrace(Throwable.java:591)
         - locked <0xc423b3a8> (a java.lang.Throwable)
         at java.lang.Throwable.printStackTrace(Throwable.java:510)
    My application runs on solaris, sparc machine. JVM is 1.4.2_04-b05.

    Can u pstack the process at this moment? The stacks of all the threads are probably too large to be shown here.
    Show the thread #575. i.e. nid = 0x23f, convert to decimal = 575, maybe its stuck in the native portion.
    Hope this helps.

  • Weblogic 10 jsp compliation thread block problem

    hi
    i am using weblogic 10 and jdk1.5.
    My application is deployed in ear format, with 2 wars, and 20 ejbs.
    The ear works ok with weblogic 8.1.
    In the application , one war passes the request to another war, that's the workflow....
    Now when the request is passed on the second war, a jsp is supposed to open....but the application get stuck there.
    The call is like this in a servlet....
         reqDisp = req.getRequestDispatcher("/newIndex.jsp");
    reqDisp.forward(req, res);
    The new index jsp is not opened....there is no problem with it it comiples ok....i check with weblogic appc...and it is working on weblogic 8.1.
    when i stop the server...the log gives me following exception info.
    "ExecuteThread: '12' for queue: 'default'" daemon prio=6 tid=0x2b8edad0 nid=0xc1
    0 in Object.wait() [0x2da1e000..0x2da1fb64]
    at java.lang.Object.wait(Native Method)
    - waiting on <0x07f94608> (a javelin.client.JobWaiter)
    at java.lang.Object.wait(Object.java:474)
    at javelin.client.JobWaiter.blockUntilFinished(JobWaiter.java:45)
    - locked <0x07f94608> (a javelin.client.JobWaiter)
    at javelin.client.ClientUtilsImpl.build(ClientUtilsImpl.java:838)
    at weblogic.servlet.jsp.JavelinxJSPStub.compilePage(JavelinxJSPStub.java:248)
    at weblogic.servlet.jsp.JspStub.prepareServlet(JspStub.java:200)
    at weblogic.servlet.jsp.JspStub.prepareServlet(JspStub.java:164)
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:235)
    - locked <0x07ef8220> (a weblogic.servlet.jsp.JavelinxJSPStub)
    at weblogic.servlet.internal.ServletStubImpl.onAddToMapException(ServletStubImpl.java:391)
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:309)
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:175)
    at weblogic.servlet.internal.RequestDispatcherImpl.invokeServlet(RequestDispatcherImpl.java:503)
    at weblogic.servlet.internal.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:245)
    at LCDisplayController.handleProcessing(Unknown Source)
    at DisplayControllerServlet.doPost(Unknown Source)
    at DisplayControllerServlet.doGet(Unknown Source) at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
    at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:226)
    at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:124)
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:283)
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:175)
    at weblogic.servlet.internal.RequestDispatcherImpl.invokeServlet(RequestDispatcherImpl.java:503)
    at weblogic.servlet.internal.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:245)
    at com.orbitech.workflow.servlet.WFAppListController.openWorkitem(WFAppListController.java:793)
    at com.orbitech.workflow.servlet.WFAppListController.processRequest(WFAppListController.java:102)
    at com.orbitech.workflow.servlet.WFAppController.doProcessRequest(WFAppController.java:97)
    at com.orbitech.workflow.servlet.WFAppController.doGet(WFAppController.java:64) at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
    i think the there is thread blocking and the jsp is not getting compiled or smthing....
    i am unable to understnd the exception....
    any help, suggestion ? thanks in advance.

    We are using jBPM and Hibernate in our application which runs fine on other java application servers. On Weblogic we were getting an error:
    org.hibernate.HibernateException: Errors in named queries: GraphSession...........
    By adding:
    <container-descriptor>
    <prefer-web-inf-classes>true</prefer-web-inf-classes>
    </container-descriptor>
    to our weblogic.xml, Weblogic used our Hibernate3 and antl-2.7.6 .jar files which resolved this issue but created multiple CompilationException errors in many .jsp's. (as follows)
    Error 500--Internal Server Error
    weblogic.servlet.jsp.CompilationException: Failed to compile JSP /WEB-INF/jsp/struts/dashboards/portfolio_chart.jsp
    portfolio_chart.jsp:1:1: The validator class: "org.apache.taglibs.standard.tlv.JstlCoreTLV" has failed with the following exception: "java.lang.ClassCastException: weblogic.xml.jaxp.RegistrySAXParserFactory".
    <%@ taglib uri="/jstl-core" prefix="c" %>
    ^---------------------------------------^
    portfolio_chart.jsp:1:1: The validator class: "com.primavera.pvweb.taglib.JSMessageTagLibraryValidator" has failed with the following exception: "java.lang.ClassCastException: weblogic.xml.jaxp.RegistrySAXParserFactory".
    <%@ taglib uri="/jstl-core" prefix="c" %>
    ^---------------------------------------^
         at weblogic.servlet.jsp.JavelinxJSPStub.compilePage(JavelinxJSPStub.java:298)
         at weblogic.servlet.jsp.JspStub.prepareServlet(JspStub.java:216)
         at weblogic.servlet.jsp.JspStub.prepareServlet(JspStub.java:165)
         at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:235)
         at weblogic.servlet.internal.ServletStubImpl.onAddToMapException(ServletStubImpl.java:394)
         at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:309)
    Is this a Weblogic bug ?

  • TS1363 my ipod classic is visible in windows but not in itunes, this happens on 2 different computers where my iphone and ipod touch work fine which leads me to think something is up with the ipod itself and i cant find any threads to help

    my ipod classic is visible in windows but not in itunes, this happens on 2 different computers where my iphone and ipod touch work fine which leads me to think something is up with the ipod itself and i cant find any threads to help.
    any thoughts anyone??

    Perhaps the reason you haven't had any replies is because there is no such thing as an 8GB iPod Classic.
    I suggest that you begin by correctly identifying which iPod you have.
    http://support.apple.com/kb/HT1353

  • Thread Problem - (Thread Blocking Problems?)

    Hi Friends
    In my program while using thread i found a problem in this code .
    In this whlie running the 'msg' was printen only after all 5 inputs are given .
    why i was not getting output after one input.why the thread out was waiting for remaining threads input.
    my code is
    import java.io.*;
    class MyThread extends Thread
      BufferedReader bin;
       MyThread()
         super();
         start();
       public void run()
          try
           bin=new BufferedReader(new InputStreamReader(System.in));
           String msg=bin.readLine();
           System.out.println(msg);
          catch(IOException e)
             System.out.println(e);
    public class Threads
         public static void main(String args[])
              for(int i=0;i<5;i++)
                new MyThread();
    }

    Hi Friends
    In my program while using thread i found a problem
    em in this code .
    In this whlie running the 'msg' was printen only
    after all 5 inputs are given .
    why i was not getting output after one input.why
    hy the thread out was waiting for remaining threads
    input.Probably because of how the scheduler was rotating among the threads while waiting for input and queueing up output.
    When you call readLine, that thread blocks until a line is available. So it probably goes to the next thread's readLine, and so on. All threads are probably blocked waiting for input before you enter a single character.
    Something inside the VM has to coordinate the interaction with the console, and between that and your threads, the out stuff just doesn't get a chance to display right away.
    In general, you can't predict the order of execution of separate threads.

  • [svn:bz-trunk] 12951: Changed synchronized PropertyProxyRegistry#getRegistry method to non-synchronized to avoid threads blocking in message push .

    Revision: 12951
    Revision: 12951
    Author:   [email protected]
    Date:     2009-12-15 02:17:31 -0800 (Tue, 15 Dec 2009)
    Log Message:
    Changed synchronized PropertyProxyRegistry#getRegistry method to non-synchronized to avoid threads blocking in message push.
    Checkintests: Pass with the usual 3-4 tests that time out with and without this change.
    QA: Yes
    Doc: No
    Modified Paths:
        blazeds/trunk/modules/core/src/flex/messaging/io/PropertyProxyRegistry.java

    Revision: 12951
    Revision: 12951
    Author:   [email protected]
    Date:     2009-12-15 02:17:31 -0800 (Tue, 15 Dec 2009)
    Log Message:
    Changed synchronized PropertyProxyRegistry#getRegistry method to non-synchronized to avoid threads blocking in message push.
    Checkintests: Pass with the usual 3-4 tests that time out with and without this change.
    QA: Yes
    Doc: No
    Modified Paths:
        blazeds/trunk/modules/core/src/flex/messaging/io/PropertyProxyRegistry.java

  • Thread Blocked Problem

    I Have a multithread application which:
    - access to database
    - write files
    - read files
    - execute external process using exec
    What considerations should I take in order to avoid Threads Blocking? When Thread blocking occurs how can I know what is the cause?
    Thanks!
    T

    http://www.ibm.com/developerworks/library/j-thread.html
    - Saish

  • Using Thread in Helper Class Used By MDB

    Using Thread in Helper Class Used By MDB
    I am writting one Message driven bean (MDB) which will be deployed on
    weblogic 6.1.
    In MDB.onMessage I create instance of helper class.
    call it's method HelperClass.doSomething(s1,s2)
    in doSomething I start new thread
    checks if thread is alive
    when thread is dead return flag
    run method of helper class does following
    1. opens socket connection to some server
    2. writes some data to it
    3. read some data from it
    4. depending on response set flag
    I want to know whether this approach is corect.
    Specially when weblogic recommends not to use threads (or be extreamly
    careful about thread handling) .
    Following is code..
    MessageDrivenBeanClass{
         puboic void onMessage(Message msg){
              String s1 = "s1";
              String s2 = "s2";
              HelperClass helper = new HelperClass();
              boolean flg = helper.doSomething(s1,s2);
    HelperClass implements Runnable {
         String s1;
         String s2;
         boolean flg = false;
         public void HelperClass(){}
         public boolean doSomething(String s1, String s2){
              this.s1 = s1;
              this.s2 = s2;
              Thread t1 = new Thread(this);
              t1.start();
              while(true)
              if(!t1.isAlive())
                   break;
              return flg;
         public void run(){
              // do actual processing
              if(something)
                   flg = true;
              else
                   flg = false;

    What is the purpose of creating an extra thread in this scenario (if your
    code is going to wait until thread terminates anyway) ?
    Also, creating new threads can be expensive, so it is always better to use
    thread pool and not to create new thread every time.
    And,
    Thread t1 = new Thread(this);
    t1.start();
    while(true)
    if(!t1.isAlive())
    break;
    is going to waste ALOT of CPU time. t1.join() will work much better.
    sk <[email protected]> wrote:
    Using Thread in Helper Class Used By MDB
    I am writting one Message driven bean (MDB) which will be deployed on
    weblogic 6.1.
    In MDB.onMessage I create instance of helper class.
    call it's method HelperClass.doSomething(s1,s2)
    in doSomething I start new thread
    checks if thread is alive
    when thread is dead return flag
    run method of helper class does following
    1. opens socket connection to some server
    2. writes some data to it
    3. read some data from it
    4. depending on response set flag
    I want to know whether this approach is corect.
    Specially when weblogic recommends not to use threads (or be extreamly
    careful about thread handling) .
    Following is code..
    MessageDrivenBeanClass{
         puboic void onMessage(Message msg){
              String s1 = "s1";
              String s2 = "s2";
              HelperClass helper = new HelperClass();
              boolean flg = helper.doSomething(s1,s2);
    HelperClass implements Runnable {
         String s1;
         String s2;
         boolean flg = false;
         public void HelperClass(){}
         public boolean doSomething(String s1, String s2){
              this.s1 = s1;
              this.s2 = s2;
              Thread t1 = new Thread(this);
              t1.start();
              while(true)
              if(!t1.isAlive())
                   break;
              return flg;
         public void run(){
              // do actual processing
              if(something)
                   flg = true;
              else
                   flg = false;

  • Why happens when  threads block on I/O?

    I want to know what are the reasons for threads blocking on I/O.Do they block to allow the I/O operation or do they block(enter in waiting state) to allow other threads to continue operation while I/O opeation ?
    If a particular thread is blocked for I/O do other threads get a chance by the Thread Scheduler ?
    If this question has been asked and answered somewhere ,kindly let me know so that i can follow that thread.
    Thanks for your consideration.

    >
    Which thread is that which is "suspended"? The thread which is blocked waiting for the I/O will, um, wait for the I/O. That means it doesn't do anything else. It just waits. That's all. Is that not obvious?
    The "suspended" one is the one which is blocked waiting for the I/O.My question is when say the I/O is complete or the stream closes,won't the thread start executing again if given a chance by the scheduler ?
    Of course that doesn't affect any other threads. And what do you mean by "related to this thread"? There's no such concept. Each thread operates independently, except when they interact by holding locks or waiting for locks.
    "Related to this thread" means thread that share some common resources or say locks.Here i meant any other thread than the one which is blocked for I/O.
    Seems to me your mental model of threads is far too complicated. You need to get rid of all those imaginary concepts you're trying to insert there.That is what i am trying to simplify !!!!

  • Itouch 4th gen won't turn on or sync to comp, no thread has helped so far

    Hey there, no other thread has helped so far, no combination of holding power and home buttons has worked. Computer does not recognize it, it will not charge, completely black screen. Was not dropped or had anything spilled on it. Please assist!

    Ah yeah I guess I have no choice but to go into an Apple store, calling Apple support didn't help.

  • Oracle Forms - need to update multi-record block - Help needed asap

    Hi,
    We are using Oracle apps release 11i - Oracle forms 6i.
    I have a field "project_start_date" in project_block in a custom form. There is another multi-record block called role_block in the same custom form and it has a field named start_date. Requirement is when ever I make change in the project_start_date in project_block, that should reflect in role_block.start_date. I tried different means and could update only the very first record of the multi-record block - role_block. I need to update all the records in the role_block with the same project_start_date. Used looping and several other methods. But could not achieve. Any help is really appreciated.
    Thanks
    Akil

    Hi;
    For your issue i suggest close your thread here as changing thread status to answered and move it to Forum Home » Application Development in PL/SQL » Forms which you can get more quick response
    Regard
    Helios

  • Client threads block forever in SSLSocketImpl.startHandshake

    Hi --
    We have an application which has 4 threads polling a webservice over HTTPS every 1-2 minutes. We don't control the server platform or webservice framework.
    We've encountered a problem where one by one the threads stop polling. This has occurred 3 times, every time over a weekend (the busiest time for our polling). Each thread "freezes" at a different time; all 4 threads are "frozen" after about 24 hours.
    JVM thread dumps suggests that the polling threads are blocked inside SSLSocketImpl.startHandshake; each one always has the same stacktrace within the JSSE & Axis libraries:
    "SOAP Client Thread: Footy Feed" prio=5 tid=0x2877D388 nid=0x518 runnable [2c3af000..2c3afd8c]
         at java.net.SocketInputStream.socketRead0(Native Method)
         at java.net.SocketInputStream.read(SocketInputStream.java:129)
         at com.sun.net.ssl.internal.ssl.InputRecord.a(DashoA6275)
         at com.sun.net.ssl.internal.ssl.InputRecord.read(DashoA6275)
         at com.sun.net.ssl.internal.ssl.SSLSocketImpl.a(DashoA6275)
         - locked <0A931078> (a java.lang.Object)
         at com.sun.net.ssl.internal.ssl.SSLSocketImpl.j(DashoA6275)
         - locked <0A931068> (a java.lang.Object)
         at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(DashoA6275)
         at org.apache.axis.components.net.JSSESocketFactory.create(JSSESocketFactory.java:186)
         at org.apache.axis.transport.http.HTTPSender.getSocket(HTTPSender.java:131)
         at org.apache.axis.transport.http.HTTPSender.writeToSocket(HTTPSender.java:370)
         at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:88)
         at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
         at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
         at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
         at org.apache.axis.client.AxisClient.invoke(AxisClient.java:147)
         at org.apache.axis.client.Call.invokeEngine(Call.java:2719)
         at org.apache.axis.client.Call.invoke(Call.java:2702)
         at org.apache.axis.client.Call.invoke(Call.java:2378)
         at org.apache.axis.client.Call.invoke(Call.java:2301)
         at org.apache.axis.client.Call.invoke(Call.java:1758)
    ...(our application stacktrace)...
    Client: JDK1.4.1-b21, JBoss 3.2.7RC1, Axis 1.2RC2, Win2k Server SP4, no client certificates
    Server: Apache 1.3.29 (Unix) mod_ssl 2.8.16 OpenSSL 0.9.6j, mod_jk to Tomcat.
    There's at least one firewall between client and server.
    This problem appears similar: <http://issues.apache.org/bugzilla/show_bug.cgi?id=31832> & I've emailed the author.
    I've googled a lot of forums for a solution without success.
    Any help gratefully received.
    Thanks
    -- Richard Barnett

    Thanks for the reply.
    This case is different from that JMeter bug report as it's a SOAP request.
    We're not explicitly setting a timeout, but Axis defaults to a 10 minute timeout on its requests. The source seems to indicate that this doesn't apply when creating SSL sockets (although it is used when creating regular sockets). No timeout occurs in any case.
    -- Richard

  • Archiver  Issue| Automatic replication process | Archiver thread blocking

    Hi,
    Recently, we are facing a strange issue with Archiver auto replication process. Sometime, archiver thread is blocking and auto replication is stalling. We observed this issue after we apply latest OUCM patches downloded from Oracle support site.
    As an work around, we are doing UCM restart.
    Anybody got this kind off issue? We are following this up with Oracle in parallel. Any help regarding this is highly appreciated.
    Gowtham J

    What version/patch set/core update of UCM are you using?
    Jonathan
    http://redstonecontentsolutions.com
    http://corecontentonly.com

  • Running Threads-need HELP ps

    hi all, i really need to submit this assignment and im at the point of banging my head on my PC coz java is making me run nuts.
    i the code is working fine except that i need to run threads for any number of commands entered at input in the order in which thy're entered. i've written all commands in seperate classes and extended thread in each of them. all classes are working on a file so im calling them in my main class below. The for loop at the bottom of code is really giving me trouble. im sure i have to use if statements to run threads for commands entered. how can i do it. somebody help ps.
    import java.io.*;
    import java.util.*;
    public class Command
         public static void main(String[] args)
              Create cr = new Create();
              cr.createFile();
              //int numberOfCommands = // count how many commands there are on the line
              String commandLine;
              String s1 = "&;";
              int numberofCommands;
              System.out.print("Enter command: " );
              try{
                   BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
                   commandLine = br.readLine();
    StringTokenizer st = new StringTokenizer(commandLine, "&;");
         numberofCommands = st.countTokens();
         System.out.println("Number of Commands = " + numberofCommands);
         while (st.hasMoreTokens())
                 System.out.println(st.nextToken());
    Thread t[] = new Thread[numberofCommands];
    System.out.println("Threads created");
    for (int i=0; i < numberofCommands; i++)
    }catch (Exception e){}
    }

    Do you actually have a question?
    You're catching exceptions silently. Never do that. The solution to your problems may be in that catch block.
    Why are you sure that you need to use if statements?
    Why do you have that array of Thread?
    What are you trying to accomplish?

Maybe you are looking for

  • AFP doesn't play nice with Kerberos...

    I'd prefer any open ideas before blowing away the OD master and redoing all the accounts.... If I leave the AFP Authentication type to "Any", network accounts can login to any computer (and with network or portable home directories). If set to Kerbeo

  • Problem in RFC - Urgent.

    Hi, I am using a RSPC_CHAIN_REMOTE_EXECUTE FM to trigger a PC in BI. it is triggering the PC, but after it is triggering, the screen for selecting the Job Priority comes up and the transacation is not ending. The point to note is the PC is dummy PC w

  • Get Info for multiple files

    OS X 10.9.4, 27", late 2013 Seems to be a beginner's problem, sorry - I have a folder on my HD with 250 mp3 files (1.25GB) and want to copy some to a SD card (512MB). So I (shift) select say 95 files in Finder: It lists "95 of 250 selected, 723.39 GB

  • Multiple source values to single target in value mapping

    Hi Experts, I have to acheive below thing using value mapping. Source                        Target ABC                            111 CBA                            111 XYZ                             222 ZYX                             222 When I a

  • How do i clear the wrongly typed user name in the user log in window I now have 2 that show up and I dont want them how do i delete them

    inadvertently typed something in that window...not it always shows up as a choice... how do i clear the wrongly typed user name... i have another one that is just below it...that is the one i want... not the other...