A blocking problem of java thread.

Hi!
I would like to execute native thread concurrently in the Java Native Interface.
When a Java thread called a native thread to use java native interface, Java thread is blocking for processing native thread.
So, other java threads don't execute because they are blocking.
Why do these problems occur at JVM(personal basis profile:CVM)?
Regard.
Message was edited by:
peeppeep

you need to explaing the problem more clearly, maybe post the code?

Similar Messages

  • Problems with java Thread

    I'm reading book "JAVA THREAD" published by OREILLY.
    And on fifth chapter, it gives an example.
    one Thread's two method:
    private boolean done = false;
    public void run()
    while(!done)
    foo();
    public void setDone()
    done = true;
    it says, the run method will be compiled as machine code:
    Begin method run
    load register r1 with memory location 0xff12345
    Label L1:
    Test if register r1 == 1
    If true branch to L2
    Call method foo
    Branch to L1
    Label L2:
    End method run
    setDone method will be compiled like:
    Begin method setDone
    Store 1 into memory location 0xff12345
    End method setDone
    And it says " because Run method will never reload 0xff12345 to register r1(in while loop), so setDone method will never lead to run stop.
    I'm so puzzled with this. I have test this code on windows platform, run method can stop after another Thread call setDone method !.
    but I think "JAVA THREAD" should have error on this, so why ?

    If the book says it will happen like that, then the book is wrong.
    I think what they meant--and what would be correct to say--is that that is an example of what could happen if you don't synchronize all access to the run variable.
    The point is this: Threads can have local copies of variables, that are separate from other threads' local copies and separate from the "master" copy. The spec doesn't define where those local copies live--the implementation can put them anywhere it wants--but the most natural and sensible thing would be to store the local copies in CPU registers, rather than in main mem.
    The example the book gave shows what might happen if that VM stores threads' local copies in registers. There's no guarantee that the problem they described will happen, but it could, so you have to guard against it.
    You guard against it by declaring that shared variable volatile, which requires that the threads use the master copy rather than their local copies, or by synchronizing every access to that thread. Syncing requires reading from the master copy on entering the sync block (or on first access) and writing out to the master copy upon leaving the sync block.

  • Problem with Java threads

    Hi,
    I developed a class, which reads some data from an XML file and transports it to a database, using JDBC. The class worked perfectly fine.Then, I used a thread to execute the same class (using the run() method and the usual stuff), but now as soon as the thread exits, Windows says that an illegal memory access has been made.
    Has anybody encountered a similar problem? any help will be appreciated.
    thanx,
    regards.

    What type of driver are you using? If it's the JDBC ODBC bridge or any other driver that uses native libraries then maybe improper resource deallocation could cause the trouble.
    robert

  • Java Threads Problem

    Hi, I am trying to write a simple java threads program where in one thread reads a file and another thread writes the data into a second file....
    Here is my code, although i think i am correct, my program still runs in a sequential fashion help help help!!!
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    class MyThread extends Thread{
    private int a;
    private int c;
    FileInputStream in;
    FileOutputStream out;
    public MyThread(int a){
    this.a = a;
    public void run(){
    if(this.a==5)
         try {
         in = new FileInputStream("Britney.txt");
    } catch (FileNotFoundException e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
    try {
         while((c=in.read())!=-1)
              a = (char) c;
              System.out.println(a);
    catch (IOException e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
    if(this.a==10)
         try {
              out = new FileOutputStream("romi.txt");
         } catch (FileNotFoundException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
         for(int i = 0;i<50;i++)
              try {
                   System.out.println(c);
                   out.write(c);
              } catch (IOException e) {
                   // TODO Auto-generated catch block
                   e.printStackTrace();
    class MainMyThread{
    public static void main(String args[]){
    MyThread thr1, thr2;
    thr1 = new MyThread(5);
    thr2 = new MyThread(10);
    thr1.start();
    thr2.start();
    }

    Encephalopathic wrote:
    malcolmmc wrote:
    ... Chances of getting any kind of reply except "me too" can be pretty remote. ....there's actually a better chance of getting a reply on a general forum like this one, ....Can't you just post in both the narrow and the general forum, but include links one to the other in each thread? Or is that against the forum rules/etiquette? Most people here are ok with a crosspost IF those links are included.
    I would also ask that the OP designate one of those threads as the real discussion thread and just direct folks there from the other threads, so that we have one coherent discussion. If he does that, there's no problem with trying to reach out to as broad an audience as possible.
    I would figure that if the poster were upfront about what they are doing, folks wouldn't mind, but I could be wrong.I think that's generally the case. As long as the discussion is confined to one thread (and pointed there from the crossposts) or at the very least all the participants can see all the discussions, I think most people don't have a problem with it. It's when we waste our time answering when he's already got the answer elsewhere that's annoying.

  • I want to execute other java thread in the JNI.

    Hi!
    I would like to execute other java native thread concurrently in the Java Native Interface.
    When a Java thread called a native thread to use java native interface, Java thread is blocking for processing native thread.
    So, other java threads don't execute because they are blocking.
    Why do these problems occur at JVM(personal basis profile:CVM)?
    I hope you explain this reason in detail.
    Regard.
    Message was edited by:
    peeppeep

    Cross post
    http://forum.java.sun.com/thread.jspa?threadID=786857&messageID=4471999#4471999

  • Having problems with java and website

    Can anyone help with a problem I am having using a Java Chat application on a website?
    I have tried to use Java Chat and the applet, when clicking the "private message" link, takes a long time to open up, and locks up my computer when it is doing so.
    I did download the latest version of Java to my computer and this problem exists using both the Netscape and Internet Explorer latest browsers.
    I am using Windows XP on a Dell Computer with a DSL connection.
    The website is http://www.gay.com/chat
    I did get an error message one time that saved a file to my desktop.
    Can anyone advise me what is going on?
    Any help would be greatly appreciated.
    I have contacted technical support at http://www.gay.com to no avail.
    Please write me back directly to [email protected]
    Here is the code which I am not sure has anything to do with the problem or not:
    An unexpected exception has been detected in native code outside the VM.
    Unexpected Signal : EXCEPTION_ACCESS_VIOLATION occurred at PC=0x6D07014F
    Function=Java_sun_awt_windows_WColor_getDefaultColor+0x28D4
    Library=C:\Program Files\Java\j2re1.4.1_02\bin\awt.dll
    Current Java thread:
         at sun.awt.windows.WToolkit.eventLoop(Native Method)
         at sun.awt.windows.WToolkit.run(Unknown Source)
         at java.lang.Thread.run(Unknown Source)
    Dynamic libraries:
    0x00400000 - 0x00419000      C:\Program Files\Internet Explorer\IEXPLORE.EXE
    0x77F50000 - 0x77FF7000      C:\WINDOWS\System32\ntdll.dll
    0x77E60000 - 0x77F46000      C:\WINDOWS\system32\kernel32.dll
    0x77C10000 - 0x77C63000      C:\WINDOWS\system32\msvcrt.dll
    0x77D40000 - 0x77DC6000      C:\WINDOWS\system32\USER32.dll
    0x77C70000 - 0x77CB0000      C:\WINDOWS\system32\GDI32.dll
    0x77DD0000 - 0x77E5D000      C:\WINDOWS\system32\ADVAPI32.dll
    0x78000000 - 0x7807F000      C:\WINDOWS\system32\RPCRT4.dll
    0x70A70000 - 0x70AD4000      C:\WINDOWS\system32\SHLWAPI.dll
    0x71700000 - 0x71849000      C:\WINDOWS\System32\SHDOCVW.dll
    0x71950000 - 0x71A34000      C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.10.0_x-ww_f7fb5805\comctl32.dll
    0x773D0000 - 0x77BC2000      C:\WINDOWS\system32\SHELL32.dll
    0x77340000 - 0x773CB000      C:\WINDOWS\system32\comctl32.dll
    0x771B0000 - 0x772D1000      C:\WINDOWS\system32\ole32.dll
    0x5AD70000 - 0x5ADA4000      C:\WINDOWS\System32\uxtheme.dll
    0x75F80000 - 0x7607C000      C:\WINDOWS\System32\BROWSEUI.dll
    0x72430000 - 0x72442000      C:\WINDOWS\System32\browselc.dll
    0x75F40000 - 0x75F5F000      C:\WINDOWS\system32\appHelp.dll
    0x76FD0000 - 0x77048000      C:\WINDOWS\System32\CLBCATQ.DLL
    0x77120000 - 0x771AB000      C:\WINDOWS\system32\OLEAUT32.dll
    0x77050000 - 0x77115000      C:\WINDOWS\System32\COMRes.dll
    0x77C00000 - 0x77C07000      C:\WINDOWS\system32\VERSION.dll
    0x76200000 - 0x76298000      C:\WINDOWS\system32\WININET.dll
    0x762C0000 - 0x76348000      C:\WINDOWS\system32\CRYPT32.dll
    0x762A0000 - 0x762AF000      C:\WINDOWS\system32\MSASN1.dll
    0x76F90000 - 0x76FA0000      C:\WINDOWS\System32\Secur32.dll
    0x76620000 - 0x7666E000      C:\WINDOWS\System32\cscui.dll
    0x76600000 - 0x7661B000      C:\WINDOWS\System32\CSCDLL.dll
    0x76670000 - 0x76757000      C:\WINDOWS\System32\SETUPAPI.dll
    0x10000000 - 0x1001C000      C:\Program Files\Norton SystemWorks\Norton AntiVirus\NavShExt.dll
    0x01470000 - 0x0148A000      C:\WINDOWS\System32\ccTrust.dll
    0x55900000 - 0x55961000      C:\WINDOWS\System32\MSVCP60.dll
    0x76B20000 - 0x76B35000      C:\WINDOWS\System32\ATL.DLL
    0x014D0000 - 0x016D1000      C:\WINDOWS\System32\msi.dll
    0x016E0000 - 0x01704000      C:\Program Files\Microsoft Money\System\mnyviewer.dll
    0x763B0000 - 0x763F5000      C:\WINDOWS\system32\comdlg32.dll
    0x1A400000 - 0x1A47A000      C:\WINDOWS\system32\urlmon.dll
    0x76170000 - 0x761F8000      C:\WINDOWS\System32\shdoclc.dll
    0x74770000 - 0x747FF000      C:\WINDOWS\System32\mlang.dll
    0x71AD0000 - 0x71AD8000      C:\WINDOWS\System32\wsock32.dll
    0x71AB0000 - 0x71AC5000      C:\WINDOWS\System32\WS2_32.dll
    0x71AA0000 - 0x71AA8000      C:\WINDOWS\System32\WS2HELP.dll
    0x71A50000 - 0x71A8B000      C:\WINDOWS\system32\mswsock.dll
    0x71A90000 - 0x71A98000      C:\WINDOWS\System32\wshtcpip.dll
    0x76EE0000 - 0x76F17000      C:\WINDOWS\System32\RASAPI32.DLL
    0x76E90000 - 0x76EA1000      C:\WINDOWS\System32\rasman.dll
    0x71C20000 - 0x71C6E000      C:\WINDOWS\System32\NETAPI32.dll
    0x76EB0000 - 0x76EDB000      C:\WINDOWS\System32\TAPI32.dll
    0x76E80000 - 0x76E8D000      C:\WINDOWS\System32\rtutils.dll
    0x76B40000 - 0x76B6C000      C:\WINDOWS\System32\WINMM.dll
    0x5CD70000 - 0x5CD77000      C:\WINDOWS\System32\serwvdrv.dll
    0x5B0A0000 - 0x5B0A7000      C:\WINDOWS\System32\umdmxfrm.dll
    0x75E90000 - 0x75F37000      C:\WINDOWS\System32\SXS.DLL
    0x76F20000 - 0x76F45000      C:\WINDOWS\System32\DNSAPI.dll
    0x76D60000 - 0x76D77000      C:\WINDOWS\System32\iphlpapi.dll
    0x76FB0000 - 0x76FB7000      C:\WINDOWS\System32\winrnr.dll
    0x76F60000 - 0x76F8C000      C:\WINDOWS\system32\WLDAP32.dll
    0x722B0000 - 0x722B5000      C:\WINDOWS\System32\sensapi.dll
    0x75A70000 - 0x75B15000      C:\WINDOWS\system32\USERENV.dll
    0x0FFD0000 - 0x0FFF3000      C:\WINDOWS\System32\rsaenh.dll
    0x76FC0000 - 0x76FC5000      C:\WINDOWS\System32\rasadhlp.dll
    0x63580000 - 0x6382C000      C:\WINDOWS\System32\mshtml.dll
    0x746F0000 - 0x74716000      C:\WINDOWS\System32\msimtf.dll
    0x74720000 - 0x74764000      C:\WINDOWS\System32\MSCTF.dll
    0x76390000 - 0x763AC000      C:\WINDOWS\System32\IMM32.DLL
    0x32520000 - 0x32532000      C:\Program Files\Microsoft Office\Office10\msohev.dll
    0x02430000 - 0x0244B000      C:\Program Files\Common Files\Symantec Shared\Script Blocking\scrauth.dll
    0x02560000 - 0x0257E000      C:\Program Files\Common Files\Symantec Shared\Script Blocking\ScrBlock.dll
    0x76C30000 - 0x76C5B000      C:\WINDOWS\System32\wintrust.dll
    0x76C90000 - 0x76CB2000      C:\WINDOWS\system32\IMAGEHLP.dll
    0x73D50000 - 0x73D60000      C:\WINDOWS\System32\cryptnet.dll
    0x6B700000 - 0x6B790000      c:\windows\system32\jscript.dll
    0x746C0000 - 0x746E7000      C:\WINDOWS\System32\MSLS31.DLL
    0x73300000 - 0x73375000      c:\windows\system32\vbscript.dll
    0x03380000 - 0x03509000      C:\WINDOWS\System32\macromed\flash\Flash.ocx
    0x72D20000 - 0x72D29000      C:\WINDOWS\System32\wdmaud.drv
    0x72D10000 - 0x72D18000      C:\WINDOWS\System32\msacm32.drv
    0x77BE0000 - 0x77BF4000      C:\WINDOWS\System32\MSACM32.dll
    0x77BD0000 - 0x77BD7000      C:\WINDOWS\System32\midimap.dll
    0x65000000 - 0x65009000      C:\WINDOWS\System32\ddrawex.dll
    0x51000000 - 0x51047000      C:\WINDOWS\System32\DDRAW.dll
    0x73BC0000 - 0x73BC6000      C:\WINDOWS\System32\DCIMAN32.dll
    0x6BDD0000 - 0x6BE03000      C:\WINDOWS\System32\dxtrans.dll
    0x6BE10000 - 0x6BE65000      C:\WINDOWS\System32\dxtmsft.dll
    0x74CB0000 - 0x74D1F000      C:\WINDOWS\System32\mshtmled.dll
    0x05230000 - 0x05237000      C:\Program Files\Microsoft Money\System\urlmapps.dll
    0x71B20000 - 0x71B31000      C:\WINDOWS\system32\MPR.dll
    0x75F60000 - 0x75F66000      C:\WINDOWS\System32\drprov.dll
    0x71C10000 - 0x71C1D000      C:\WINDOWS\System32\ntlanman.dll
    0x71CD0000 - 0x71CE6000      C:\WINDOWS\System32\NETUI0.dll
    0x71C90000 - 0x71CCC000      C:\WINDOWS\System32\NETUI1.dll
    0x71C80000 - 0x71C86000      C:\WINDOWS\System32\NETRAP.dll
    0x71BF0000 - 0x71C01000      C:\WINDOWS\System32\SAMLIB.dll
    0x75F70000 - 0x75F79000      C:\WINDOWS\System32\davclnt.dll
    0x75970000 - 0x75A61000      C:\WINDOWS\System32\MSGINA.dll
    0x76360000 - 0x7636F000      C:\WINDOWS\System32\WINSTA.dll
    0x1F7B0000 - 0x1F7E1000      C:\WINDOWS\System32\ODBC32.dll
    0x1F850000 - 0x1F866000      C:\WINDOWS\System32\odbcint.dll
    0x767F0000 - 0x76814000      C:\WINDOWS\System32\schannel.dll
    0x0FFA0000 - 0x0FFC1000      C:\WINDOWS\System32\dssenh.dll
    0x66E50000 - 0x66E8B000      C:\WINDOWS\System32\iepeers.dll
    0x73000000 - 0x73023000      C:\WINDOWS\System32\WINSPOOL.DRV
    0x71D40000 - 0x71D5B000      C:\WINDOWS\System32\actxprxy.dll
    0x6CC60000 - 0x6CC6B000      C:\WINDOWS\System32\dispex.dll
    0x6D820000 - 0x6D82F000      C:\Program Files\Java\j2re1.4.1_02\bin\npjpi141_02.dll
    0x6D780000 - 0x6D796000      C:\Program Files\Java\j2re1.4.1_02\bin\jpiexp32.dll
    0x6D7C0000 - 0x6D7D4000      C:\Program Files\Java\j2re1.4.1_02\bin\jpishare.dll
    0x6D340000 - 0x6D46A000      C:\PROGRA~1\Java\J2RE14~1.1_0\bin\client\jvm.dll
    0x6D1E0000 - 0x6D1E7000      C:\PROGRA~1\Java\J2RE14~1.1_0\bin\hpi.dll
    0x6D310000 - 0x6D31E000      C:\PROGRA~1\Java\J2RE14~1.1_0\bin\verify.dll
    0x6D220000 - 0x6D239000      C:\PROGRA~1\Java\J2RE14~1.1_0\bin\java.dll
    0x6D330000 - 0x6D33D000      C:\PROGRA~1\Java\J2RE14~1.1_0\bin\zip.dll
    0x6D000000 - 0x6D105000      C:\Program Files\Java\j2re1.4.1_02\bin\awt.dll
    0x6D190000 - 0x6D1E0000      C:\Program Files\Java\j2re1.4.1_02\bin\fontmanager.dll
    0x5C000000 - 0x5C0C8000      C:\WINDOWS\System32\D3DIM700.DLL
    0x6D720000 - 0x6D731000      C:\Program Files\Java\j2re1.4.1_02\bin\jpicom32.dll
    0x6D2E0000 - 0x6D2EE000      C:\Program Files\Java\j2re1.4.1_02\bin\net.dll
    0x6D140000 - 0x6D162000      C:\Program Files\Java\j2re1.4.1_02\bin\dcpr.dll
    0x67F00000 - 0x67F07000      C:\Program Files\America Online 8.0\idleproc.dll
    0x05420000 - 0x05427000      C:\Program Files\Yahoo!\Messenger\idle.dll
    0x1FCF0000 - 0x1FFBE000      C:\WINDOWS\System32\wmploc.dll
    0x732E0000 - 0x732E5000      C:\WINDOWS\System32\RICHED32.DLL
    0x74E30000 - 0x74E9A000      C:\WINDOWS\System32\RICHED20.dll
    0x6D2B0000 - 0x6D2D1000      C:\Program Files\Java\j2re1.4.1_02\bin\jsound.dll
    0x6D290000 - 0x6D2AE000      C:\Program Files\Java\j2re1.4.1_02\bin\jpeg.dll
    0x6D510000 - 0x6D58D000      C:\WINDOWS\system32\DBGHELP.dll
    0x76BF0000 - 0x76BFB000      C:\WINDOWS\System32\PSAPI.DLL
    Local Time = Sun Apr 20 21:23:14 2003
    Elapsed Time = 30584
    # The exception above was detected in native code outside the VM
    # Java VM: Java HotSpot(TM) Client VM (1.4.1_02-b06 mixed mode)

    Having closely scrutinised your code for many hours, I am at a loss with this one. The one thing that is suspicious is the exclamation mark after Yahoo in the 8th line from the bottom.
    Get rid of it and give it a try.

  • !!!-Need help for terminating a Java thread in real time

    Hi everyone!
    I use J2SDK1.4.1 on a Unix platform.
    I want to terminate (or stop) a running java thread, which is dealing with time consuming tasks, in real-time (for example: the delay before the thread is terminated can't beyond one second), However, I don't know which techniques I can use to make sure the previous (or old) running java threads have been terminated?
    Could you please give me any help if you can?
    Any suggestion or reply will be kindly appreciated!
    Thanks!

    Thanks very much, jverd !
    I do set a flag that the thread should periodically check !
    Well, the scenario is like this:
    1. the thread read line by line (using BufferedReader) string from a probably huge-size file
    2. analyse each string read from the file if required (some strings may be omitted based on the user's operations), the analyzing process is a time-consuming task, and the analysing process may be terminated at any time the user want.
    3. record only the strings that have been analyzed by the previous process into a recording file
    The problem I meet is as follows: (Here, I suppose that it should take at least 30 seconds to finish analyse all the strings in a given huge file )
    1. the user start the analysing process, and run it for only 5 seconds,then stop the analyzing.
    2. the user start the analysing process again from the begining of the file(analyse the strings within the same file as previous step), and then stop the analysing process at 10 second. (it means, this time the analysing process is running for 10 seconds, still haven't finish analyse all the strings in the file).
    Once I open the record file, I saw some of the strings in the recording file have been repetitively record for 2 times, and the repetitive strings are just the strings the analysing time from at 5 second to at 10 second.
    And the repetitive times are depend on how many time the user start and stop the analysing process using the same file. for example, based on the above two steps, the user do the third step as follow:
    3. the user start the analysing process once again, analyse the same file,too. And run it for 15 seconds
    This time open the recording file, this time I saw some of the strings have been repetitively record for 3 times, and the repetitive strings are just the strings the analysing time from at 10 second to at 15 second.
    So, I guess the problem is probably because the previous analysing threads haven't been terminated completely, or say they just are blocked or set as inactive etc., then when the next time start the analysing process, the old threads will be reactive,and rerun ffrom the last time they are blocked.
    I hope you had catched what I mean, if you not, please ust let me know, I'll try to explain it again.
    Thanks once again!

  • Java Threads not being released after loggin off

    Hello everyone,
    We are seeing a weird problem in our PI 7.0 box.
    Once I logout from the XI box (both ABAP and Java stck) my basis tem still sees Java threads aginst my id still open. Our system does not seem to be realeasing Java threads.
    Is this a know problem? What are the remidition steps.

    Hi,
    Are there existing HTTP sessions only?
    The following might be helpful.
    http://help.sap.com/saphelp_nw73/helpdata/en/c7/5ee440ba994fa3b187ff2f050cfe7c/content.htm
    http://wiki.sdn.sap.com/wiki/display/ERPHCM/Sessionnotendingafterlogoff
    Regards,
    Varun

  • Java threads monitoring

    I am using Java threads in my Java program, running on Windows Professional 2000. I am monitoring the threads using Windows Performance Monitor (WPM). However, even running a small Java program which creates only 2 threads, results in many (at least 10) instances of Java threads being reported by the WPM. Problem is, in WPM, there is no way to determine which threads in the WPM are the threads that I programmatically created. Any ideas on how to determine this?
    Thanks.
    Rhodie

    Hi Dmirty ,
    To handle large asynchronous message   in queues you can use  message packaging where multiple message are processed in one package . to make it applicable you have to perform these simple steps
    1. go to SXMB_ADM add one RUNTIME parameter PACKAGING and value 1
    2 GO TO transaction SXMS_BCONF set delay time 0 message count 100 messages and package size 1000 KB
    with these setting your improvement will increase .secondly also put  IN SXMB_ADM monitor category parameter QRFC_RESTART_ALLOWED TO 1
    this will automatically start your queue . Only thing you have to take care if you enable packaging them don't keep too many parallel queue i.e EO_INBOUND_PARALLEL and EO_OUTBOUND_PARALLEL should be less than 20
    Regards,
    Saurabh

  • Problem with java and pogo games

    i use mozilla and now with the problems with java and hackers cannot play my pogo games,what can i do? i disabled my java i tried java 6 doesnt work or is not safe,what is a safe way to play games on pogo that use java?

    Oracle has released a Java 7 Update 11 to address security vulnerabilities and you should update to that version.
    *https://support.mozilla.org/kb/how-to-use-java-if-its-been-blocked
    See also:
    *http://kb.mozillazine.org/Java#Windows_installation_issues
    You can find the latest Java version on the Oracle website.
    See Java Platform > Java SE 7U11 and Java 6U38 (Download JRE)
    *http://www.oracle.com/technetwork/java/javase/downloads/index.html

  • Problem with java swing button and loop

    Problem with java swing button and loop
    I�m using VAJ 4.0. and I�m doing normal GUI application. I have next problem.
    I have in the same class two jswing buttons named start (ivjGStart) and stop (ivjGStop) and private static int field named Status where initial value is 0. This buttons should work something like this:
    When I click on start button it must do next:
    Start button must set disenabled and Stop button must set enabled and selected. Field status is set to 1, because this is a condition in next procedure in some loop. And then procedure named IzvajajNeprekinjeno() is invoked.
    And when I click on stop button it must do next:
    Start button must set enabled and selected and Stop button must set disenabled.
    Field status is set to 0.
    This works everything fine without loop �do .. while� inside the procedure IzvajajNeprekinjeno(). But when used this loop the start button all the time stay (like) pressed. And this means that a can�t stop my loop.
    There is java code, so you can get better picture:
    /** start button */
    public void gStart_ActionEvents() {
    try {
    ivjGStart.setEnabled(false);
    ivjGStop.setEnabled(true);
    ivjGStop.setSelected(true);
    getJTextPane1().setText("Program is running ...");
    Status = 1;
    } catch (Exception e) {}
    /** stop button */
    public void gStop_ActionEvents() {
    try {
    ivjGStart.setEnabled(true);
    ivjGStart.setSelected(true);
    ivjGStop.setEnabled(false);
    getJTextPane1().setText("Program is NOT running ...");
    Status = 0;
    } catch (Exception e) {
    /** procedure IzvajajNeprekinjeno() */
    public void IzvajajNeprekinjeno() {  //RunLoop
    try {
    int zamik = 2000; //delay
    do {
    Thread.sleep(zamik);
    PreberiDat(); //procedure
    } while (Status == 1);
    } catch (Exception e) {
    So, I'm asking what I have to do, that start button will not all the time stay pressed? Or some other aspect of solving this problem.
    Any help will be appreciated.
    Best regards,
    Tomi

    This is a multi thread problem. When you start the gui, it is running in one thread. Lets call that GUI_Thread so we know what we are talking about.
    Since java is task-based this will happen if you do like this:
    1. Button "Start" is pressed. Thread running: GUI_Thread
    2. Event gStart_ActionEvents() called. Thread running: GUI_Thread
    3. Method IzvajajNeprekinjeno() called. Thread running: GUI_Thread
    4. Sleep in method IzvajajNeprekinjeno() on thread GUI_Thread
    5. Call PreberiDat(). Thread running: GUI_Thread
    6. Check status. If == 1, go tho 4. Thread running: GUI_Thread.
    Since the method IzvajajNeprekinjeno() (what does that mean?) and the GUI is running in the same thread and the event that the Start button has thrown isn't done yet, the program will go on in the IzvajajNeprekinjeno() method forever and never let you press the Stop-button.
    What you have to do is do put either the GUI in a thread of its own or start a new thread that will do the task of the IzvajajNeprekinjeno() method.
    http://java.sun.com/docs/books/tutorial/uiswing/index.html
    This tutorial explains how to build a multi threaded gui.
    /Lime

  • Java thread not working in windows 7

    I have a Java app that runs just fine on Windows XP. However, on Windows 7 there is a problem related to a job being done via a Java thread.
    Background: The app spawns a separate job via a Java thread and continues on while the spawned job executes. In other words, 2 things happen at once.
    Problem: On Windows 7, when the app spawns the job, Windows sits and waits for the spawned job to complete before it continues on. In other words, 2 things DO NOT happen at once.
    It's as if Java threading does not work in Windows 7. Any input would be greatly appreciated. Thanks.

    l_sleven wrote:
    Thanks for the input, guys. From now on I'll be sure to include a SSCCE.
    I'm beginning to believe this is actually my ignorance of threading in SWT, and XP was more forgiving than 7.
    I would include a SSCCE, but of the 4 different ways I tried to get this to work I wouldn't know which to include since all failed to fix the problem.
    If you want to identify a link to a web page identifying 'best practices' for SWT threading, that would be great. Be aware though that there's a good chance I've already googled the page.
    A programmer smarter than me once said, "The road to best practices is a bumpy ride".[Concurrency in Swing|http://download.oracle.com/javase/tutorial/uiswing/concurrency/index.html]

  • Problem with Java Stack- dev_w2 log mentioned.

    Hi everyone, I have a problem with Java Stack, I could not connect to XI home page,
    I am unable to login to j2ee engine using visual Administrator.
    Please go through the log below. And help me out to resolve this issue and let me know what could be the problem.
    trc file: "dev_w2", trc level: 1, release: "640"
    ACTIVE TRACE LEVEL           1
    ACTIVE TRACE COMPONENTS      all, M

    B  create_con (con_name=R/3)
    B  Loading DB library 'C:\usr\sap\SXI\SYS\exe\run\dboraslib.dll' ...
    B  Library 'C:\usr\sap\SXI\SYS\exe\run\dboraslib.dll' loaded
    B  Version of 'C:\usr\sap\SXI\SYS\exe\run\dboraslib.dll' is "640.00", patchlevel (0.39)
    B  New connection 0 created
    M systemid   560 (PC with Windows NT)
    M relno      6400
    M patchlevel 0
    M patchno    43
    M intno      20020600
    M make:      multithreaded, Unicode
    M pid        4140
    M
    M  ***LOG Q0Q=> tskh_init, WPStart (Workproc 2 4140) [dpxxdisp.c   1160]
    I  MtxInit: -2 0 0
    M  DpSysAdmExtCreate: ABAP is active
    M  DpSysAdmExtCreate: JAVA is not active
    M  DpShMCreate: sizeof(wp_adm)          13160     (1316)
    M  DpShMCreate: sizeof(tm_adm)          2780232     (13832)
    M  DpShMCreate: sizeof(wp_ca_adm)          24000     (80)
    M  DpShMCreate: sizeof(appc_ca_adm)     8000     (80)
    M  DpShMCreate: sizeof(comm_adm)          290000     (580)
    M  DpShMCreate: sizeof(vmc_adm)          0     (372)
    M  DpShMCreate: sizeof(wall_adm)          (38456/34360/64/184)
    M  DpShMCreate: SHM_DP_ADM_KEY          (addr: 060A0040, size: 3195320)
    M  DpShMCreate: allocated sys_adm at 060A0040
    M  DpShMCreate: allocated wp_adm at 060A1B58
    M  DpShMCreate: allocated tm_adm_list at 060A4EC0
    M  DpShMCreate: allocated tm_adm at 060A4EE8
    M  DpShMCreate: allocated wp_ca_adm at 0634BB30
    M  DpShMCreate: allocated appc_ca_adm at 063518F0
    M  DpShMCreate: allocated comm_adm_list at 06353830
    M  DpShMCreate: allocated comm_adm at 06353848
    M  DpShMCreate: allocated vmc_adm_list at 0639A518
    M  DpShMCreate: system runs without vmc_adm
    M  DpShMCreate: allocated ca_info at 0639A540
    M  DpShMCreate: allocated wall_adm at 0639A548
    X  EmInit: MmSetImplementation( 2 ).
    X  <ES> client 2 initializing ....
    X  <ES> InitFreeList
    X  Using implementation flat
    M  <EsNT> Memory Reset disabled as NT default
    X  ES initialized.

    M  calling db_connect ...
    C  Got ORACLE_HOME=c:\oracle\ora92 from environment
    C  Client NLS settings: AMERICAN_AMERICA.UTF8
    C  Logon as OPS$-user to get SAPSXI's password
    C  Connecting as /@SXI on connection 0 ...
    C  Attaching to DB Server SXI (con_hdl=0,svchp=04494404,svrhp=04495074)

    C  Starting user session (con_hdl=0,svchp=04494404,srvhp=04495074,usrhp=0449D8AC)

    C  Now I'm connected to ORACLE
    C  Got SAPSXI's password from OPS$-user
    C  Disconnecting from connection 0 ...
    C  Closing user session (con_hdl=0,svchp=04494404,usrhp=0449D8AC)
    C  Now I'm disconnected from ORACLE
    C  Connecting as SAPSXI/<pwd>@SXI on connection 0 ...
    C  Starting user session (con_hdl=0,svchp=04494404,srvhp=04495074,usrhp=0449D8AC)
    C  Now I'm connected to ORACLE
    C  Database NLS settings: AMERICAN_AMERICA.UTF8
    C  Database instance sxi is running on STARXI with ORACLE version 9.2.0.5.0 since 20081020
    B  Connection 0 opened
    B  Wp  Hdl ConName          ConId     ConState     TX  PRM RCT TIM MAX OPT Date     Time   DBHost         
    B  000 000 R/3              000000000 ACTIVE       NO  YES NO  000 255 255 20081020 123752 STARXI         
    M  db_connect o.k.
    I  MtxInit: 2 0 0
    M  SHM_PRES_BUF               (addr: 08230040, size: 4400128)
    M  SHM_ROLL_AREA          (addr: 62E40040, size: 77594624)
    M  SHM_PAGING_AREA          (addr: 08670040, size: 39845888)
    M  SHM_ROLL_ADM               (addr: 0AC80040, size: 775412)
    M  SHM_PAGING_ADM          (addr: 0AD40040, size: 525344)
    M  ThCreateNoBuffer          allocated 540152 bytes for 1000 entries at 0ADD0040
    M  ThCreateNoBuffer          index size: 3000 elems
    M  ThCreateVBAdm          allocated 12160 bytes (50 server) at 0AE60040
    X  EmInit: MmSetImplementation( 2 ).
    X  <ES> client 2 initializing ....
    X  Using implementation flat
    X  ES initialized.

    B  db_con_shm_ini:  WP_ID = 2, WP_CNT = 10
    B  dbtbxbuf: Buffer TABL  (addr: 103D00C8, size: 30000128, end: 1206C4C8)
    B  dbtbxbuf: Profile: max_objects = 5000, displace = 1, reorg = 1
    B  dbtbxbuf: request_unit = 2000, sync_reload = 5, inval_reload = 5
    B  dbtbxbuf: protect_shm = 0, force_checks = 0
    B  dbtbxbuf: tsize_retry = 14302848
    B  ***LOG BB0=> buffer TABL       started with length 30000128   bytes [dbtbxbuf#7 @ 15714] [dbtbxbuf1571 4]
    B  dbtbxbuf: Buffer TABLP (addr: 0E4000C8, size: 10240000, end: 0EDC40C8)
    B  dbtbxbuf: Profile: max_objects = 500, displace = 1, reorg = 1
    B  dbtbxbuf: request_unit = 2000, sync_reload = 5, inval_reload = 5
    B  dbtbxbuf: protect_shm = 0, force_checks = 0
    B  dbtbxbuf: tsize_retry = 5046656
    B  ***LOG BB0=> buffer TABLP      started with length 10240000   bytes [dbtbxbuf#7 @ 15714] [dbtbxbuf1571 4]
    B  dbtbxbuf: Reading TBX statistics:
    B  dbtbxbuf: 41 object entries precreated
    B  Layout of EIBUF buffer shared memory:
    B  0: 1 * 4 = 4
    B  1: 1 * 344 = 344
    B  2: 10 * 20 = 200
    B  3: 4001 * 48 = 192048
    B  4: 2000 * 232 = 464000
    B  5: 4001 * 4 = 16004
    B  6: 1 * 200 = 200
    B  7: 65 * 4 = 260
    B  8: 13754 * 256 = 3521024
    B  Tracing = 0, Shm Protection = 0, Force checks = 0
    B  dbexpbuf: Buffer EIBUF (addr: 0EDE00D0, size: 4194304, end: 0F1E00D0)
    B  ***LOG BB0=> buffer EIBUF      started with length 4096k      bytes [dbexpbuf#5 @ 2322] [dbexpbuf2322 ]
    B  Layout of ESM   buffer shared memory:
    B  0: 1 * 4 = 4
    B  1: 1 * 344 = 344
    B  2: 10 * 20 = 200
    B  3: 4001 * 48 = 192048
    B  4: 2000 * 232 = 464000
    B  5: 4001 * 4 = 16004
    B  6: 1 * 200 = 200
    B  7: 65 * 4 = 260
    B  8: 13754 * 256 = 3521024
    B  Tracing = 0, Shm Protection = 0, Force checks = 0
    B  dbexpbuf: Buffer ESM   (addr: 0F1F00D0, size: 4194304, end: 0F5F00D0)
    B  ***LOG BB0=> buffer ESM        started with length 4096k      bytes [dbexpbuf#5 @ 2322] [dbexpbuf2322 ]
    B  Layout of CUA   buffer shared memory:
    B  0: 1 * 4 = 4
    B  1: 1 * 344 = 344
    B  2: 10 * 20 = 200
    B  3: 3001 * 48 = 144048
    B  4: 1500 * 232 = 348000
    B  5: 3001 * 4 = 12004
    B  6: 1 * 200 = 200
    B  7: 193 * 4 = 772
    B  8: 5012 * 512 = 2566144
    B  Tracing = 0, Shm Protection = 0, Force checks = 0
    B  dbexpbuf: Buffer CUA   (addr: 0F6000D0, size: 3072000, end: 0F8EE0D0)
    B  ***LOG BB0=> buffer CUA        started with length 3000k      bytes [dbexpbuf#5 @ 2322] [dbexpbuf2322 ]
    B  Layout of OTR   buffer shared memory:
    B  0: 1 * 4 = 4
    B  1: 1 * 344 = 344
    B  2: 10 * 20 = 200
    B  3: 4001 * 48 = 192048
    B  4: 2000 * 232 = 464000
    B  5: 4001 * 4 = 16004
    B  6: 1 * 200 = 200
    B  7: 81 * 4 = 324
    B  8: 13754 * 256 = 3521024
    B  Tracing = 0, Shm Protection = 0, Force checks = 0
    B  dbexpbuf: Buffer OTR   (addr: 0F8F00D0, size: 4194304, end: 0FCF00D0)
    B  ***LOG BB0=> buffer OTR        started with length 4096k      bytes [dbexpbuf#5 @ 2322] [dbexpbuf2322 ]
    B  ***LOG BB0=> buffer CALE       started with length 500000     bytes [dbcalbuf#1 @ 2206] [dbcalbuf2206 ]
    B  dbtran INFO (init_connection '<DEFAULT>' [ORACLE:640.00]):
    B   max_blocking_factor =  15,  max_in_blocking_factor      =   5,
    B   min_blocking_factor =  10,  min_in_blocking_factor      =   5,
    B   prefer_union_all    =   0,  prefer_union_for_select_all =   0,
    B   prefer_fix_blocking =   0,  prefer_in_itab_opt          =   1,
    B   convert AVG         =   0,  alias table FUPD            =   0,
    B   escape_as_literal   =   1,  opt GE LE to BETWEEN        =   0,
    B   select *            =0x0f,  character encoding          = STD / <none>:-,
    B   use_hints           = abap->1, dbif->0x1, upto->2147483647, rule_in->0,
    B                         rule_fae->0, concat_fae->0, concat_fae_or->0

    M  PfHIndInitialize: memory=<0AEEC488>, header=<0AEEC488>, records=<0AEEC4D0>
    M  SecAudit(init_sel_info): init of SCSA completed: 02 slots used
    M  ***LOG AV6=> 02& [rsauwr1.c    1619]
    M  SsfSapSecin: automatic application server initialization for SAPSECULIB
    N  SsfSapSecin: Looking for PSE in database
    N  SsfPseLoad: started...(path=C:\usr\sap\SXI\DVEBMGS00\sec, AS=starxi, instanceid=00)

    N  SsfPseLoad: Downloading file C:\usr\sap\SXI\DVEBMGS00\sec\SAPSYS.pse (client:    , key: SYSPSE, len: 1078)
    N  SsfPseLoad: ended (1 of 1 sucessfully loaded, 1 checked...
    N  MskiCreateLogonTicketCache: Logon Ticket cache created in shared memory.
    N  MskiCreateLogonTicketCache: Logon Ticket cache pointer registered in shared memory.
    M  rdisp/reinitialize_code_page -> 0
    M  icm/accept_remote_trace_level -> 0
    M  rdisp/no_hooks_for_sqlbreak -> 0

    S  *** init spool environment
    S  initialize debug system
    T  Stack direction is downwards.
    T  debug control: prepare exclude for printer trace
    T  new memory block 121963B0
    S  spool kernel/ddic check: Ok
    S  using table TSP02FX for frontend printing
    S  1 spool work process(es) found
    S  frontend print via spool service enabled
    S  printer list size is 150
    S  printer type list size is 50
    S  queue size (profile)   = 300
    S  hostspool list size = 3000
    S  option list size is 30
    S      intervals: query=50, rescan=1800, global=300 info=120
    S      processing queue enabled
    S  creating spool memory service RSPO-RCLOCKS at 0FEB00A8
    S  doing lock recovery
    S  setting server cache root
    S  using server cache size 100 (prof=100)
    S  creating spool memory service RSPO-SERVERCACHE at 0FEB0370
    S    using messages for server info
    S  size of spec char cache entry: 297028 bytes (timeout 100 sec)
    S  size of open spool request entry: 2132 bytes
    S  immediate print option for implicitely closed spool requests is disabled


    A  -PXA--
    A  PXA INITIALIZATION
    A  PXA: Fragment Size too small: 73 MB, reducing # of fragments
    A  System page size: 4kb, admin_size: 5032kb.
    A  PXA allocated (address 67850040, size 150000K)
    A  System name
    A  ORACLE...........................SXI........20081004121019.....................................
    A  is used for RFC security.
    A  Sharedbuffer token: 41534050...33 (len: 111)====== 2b61c190857e36a8681ef39a...
    A  abap/pxa = shared protect gen_remote
    A  PXA INITIALIZATION FINISHED
    A  -PXA--

    A  ABAP ShmAdm initialized (addr=579F4000 leng=20955136 end=58DF0000)
    A  >> Shm MMADM area (addr=57E69DF0 leng=126176 end=57E88AD0)
    A  >> Shm MMDAT area (addr=57E89000 leng=16150528 end=58DF0000)
    A  RFC rfc/signon_error_log = -1
    A  RFC rfc/dump_connection_info = 0
    A  RFC rfc/dump_client_info = 0
    A  RFC rfc/cp_convert/ignore_error = 1
    A  RFC rfc/cp_convert/conversion_char = 23
    A  RFC rfc/wan_compress/threshold = 251
    A  RFC rfc/recorder_pcs not set, use defaule value: 2
    A  RFC rfc/delta_trc_level not set, use default value: 0
    A  RFC rfc/no_uuid_check not set, use default value: 0
    A  RFC Method> initialize RemObjDriver for ABAP Objects
    A  Hotpackage version: 9
    M  ThrCreateShObjects          allocated 10568 bytes at 0FFD0040
    M  ThVBStartUp: restart pending update requests

    M  ThVBAutoStart: update-auto-delete
    N  SsfSapSecin: putenv(SECUDIR=C:\usr\sap\SXI\DVEBMGS00\sec): ok
    N  SsfSapSecin: PSE C:\usr\sap\SXI\DVEBMGS00\sec\SAPSYS.pse found!

    N  =================================================
    N  === SSF INITIALIZATION:
    N  ===...SSF Security Toolkit name SAPSECULIB .
    N  ===...SSF trace level is 0 .
    N  ===...SSF library is C:\usr\sap\SXI\SYS\exe\run\sapsecu.dll .
    N  ===...SSF hash algorithm is SHA1 .
    N  ===...SSF symmetric encryption algorithm is DES-CBC .
    N  ===...sucessfully completed.
    N  =================================================
    N  MskiInitLogonTicketCacheHandle: Logon Ticket cache pointer retrieved from shared memory.
    N  MskiInitLogonTicketCacheHandle: Workprocess runs with Logon Ticket cache.
    W  =================================================
    W  === ipl_Init() called
    W    ITS Plugin: Path dw_gui
    W    ITS Plugin: Description ITS Plugin - ITS rendering DLL
    W    ITS Plugin: sizeof(SAP_UC) 2
    W    ITS Plugin: Release: 640, [6400.0.43.20020600]
    W    ITS Plugin: Int.version, [31]
    W    ITS Plugin: Feature set: [3]
    W    ===... Calling itsp_Init in external dll ===>
    W  === ipl_Init() returns 0, ITSPE_OK: OK
    W  =================================================
    M  MBUF info for hooks: MS component UP
    M  ThSetEnqName: set enqname by profile
    M  ThISetEnqname: enq name = >starxi_SXI_00                           <

    E  *************** EnqId_EN_ActionAtMsUpHook ***************
    E  Hook on upcoming Ms (with EnqSrv), get auth EnqId and check it locally
    E  Enqueue Info: enque/disable_replication = 2
    E  Enqueue Info: replication disabled


    E  *************** ObjShMem_CheckAuthoritativeEnqId ***************
    E  Checking authoritative EnqId from EnqSrv into ObjShMem
    E  ObjShMem_CheckAuthoritativeEnqId: ObjShMem ...
    E  EnqId.EnqTabCreaTime    = -999
    E  EnqId.RandomNumber      = -999
    E  ReqOrd.TimeInSecs       = -999
    E  ReqOrd.ReqNumberThisSec = -999
    E  ObjShMem_CheckAuthoritativeEnqId: ObjShMem ...
    E  EnqId.EnqTabCreaTime    = -999
    E  EnqId.RandomNumber      = -999
    E  ReqOrd.TimeInSecs       = -999
    E  ReqOrd.ReqNumberThisSec = -999
    E  ObjShMem_CheckAuthoritativeEnqId: EnqId is initial in ShMem
    E  ObjShMem_CheckAuthoritativeEnqId: Overwrite incoming auth EnqId, continue
    E  EnqId inscribed into initial ObjShMem: (ObjShMem_CheckAuthoritativeEnqId)
    E  -SHMEM--
    E  EnqId:          EnqTabCreaTime/RandomNumber    = 20.10.2008 12:38:10  1224486490 / 4140
    E  ReqOrd at Srv:  TimeInSecs/ReqNumberThisSec    = 20.10.2008 12:38:11  1224486491 / 1
    E  ReqOrd at Cli:  TimeInSecs/ReqNumberThisSec    = 20.10.2008 12:38:11  1224486491 / 1
    E  Status:         STATUS_OK
    E  -
    M  ThActivateServer: state = STARTING
    L  Begin of BtcSysStartRaise
    L  Raise event SAP_SYSTEM_START with parameter <starxi_SXI_00       >
    L  End of BtcSysStartRaise

    I  MPI<c>9#3 Peak buffer usage: 5 (@ 64 KB)

    M  *** WARNING => ThCheckReqInfo: req_info & DP_CANT_HANDLE_REQ
    M  return number range rc 12
    M  *** WARNING => ThNoGet: get from object (cli/obj/subobj/range = 000/ALAUTOUID /      /01) returned rc 12

    S  server @>SSRV:starxi_SXI_00@< appears or changes (state 1)
    B  table logging switched off for all clients

    S  server @>SSRV:starxi_SXI_00@< appears or changes (state 1)

    M  hostaddrlist return 0

    M  hostaddrlist return 0

    M  hostaddrlist return 0
    M  hostaddrlist return 0
    M  hostaddrlist return 0
    Regards,
    Varun.

    You probably made the same mistake as I did and added the tables manually to the "sample" database instead of the "sun-appserv-samples" database.
    marc

  • How to terminate a java thread from c++ code?

    Hi,
    I made a screensaver which loads a jvm, forks a thread running a java class, wait until user's action(i.e. mouse move/click keyboard input), then terminate the java thread.
    However, I met a problem, How to terminate a running java thread from c++ code?
    Here is my code, but it does not work: (even after the terminate is called, jvm throws an error)
    JNIEnv* env;
    JavaVM* jvm;
    HANDLE hThread; //handle for the startThread
    unsigned __stdcall startThread(void *arg)
         jclass cls;
         jmethodID mainId;
         jint          res;
         int threadNum = (int)arg;
         res = jvm->AttachCurrentThread((void**)&env, NULL);
    cls = env->FindClass( MAIN_CLASS);
         mainId = env->GetStaticMethodID(cls, "main", "([Ljava/lang/String;)V");
         // setup the parameters to pass to main()
         jstring str;
         jobjectArray args;
         int i=0;
         args = env->NewObjectArray(1, env->FindClass("java/lang/String"), 0); //only one input parameters
         str = env->NewStringUTF("localhost");
         env->SetObjectArrayElement(args, 0, str);
         env->CallStaticVoidMethod(cls, mainId, args); // call main()      
         if (env->ExceptionOccurred()) {
                   env->ExceptionDescribe();
         return TRUE;
    Here is the main method:
    First create the jvm and load the thread. then tries to terminate the thread, but failed here
    switch (msg)
    { case WM_CREATE:
              JavaVMOption options[NUMBEROFOPTIONS];
              JavaVMInitArgs vmargs;     
              jint rc;
              vmargs.version = JNI_VERSION_1_4; /* version 1.4 */
              vmargs.options = options;
              vmargs.nOptions = NUMBEROFOPTIONS;
              vmargs.ignoreUnrecognized = JNI_FALSE;          
              rc=JNI_CreateJavaVM( &jvm, (void **)&env, &vmargs ); /* create JVM */
              /* We pass the thread number as the argument to the invoked thread */
              unsigned int threadId = -1;
              // to initialize a thread-safe C runtime library
              hThread = (HANDLE)_beginthreadex(NULL, 0, &startThread, NULL, 0, &threadId );
    } break;
    case (WM_DESTROY):
              CloseHandle( hThread );
              jvm->DestroyJavaVM(); /* kill JVM */
              Debug("Destroy Java Virtual Machine\n");
    }break;
    Note, after the thread "startThread" runs, it has an infinite loop and will not terminate, until the user clicks to terminate.(I didn't call jvm->DetachCurrentThread();_endthreadex(0); in the "startThread" because the java thread will not terminate by itself)
    Thus, the only way to terminate the thread is to call closehandle(hthread) in the main thread, which may cause jvm to throw an error.
    Do you know how to terminate a java thread safely???
    Thanks a lot

    Assuming that your java thread is in a loop of some kind. Such as
    int i=1; /* I tried using a boolean, I just could not get my C++ env, to change this value. So i decided to use an int */
    run {
    while(i)
    isdfjsdfj
    void seti()
    i=0
    So, B/4, i call destroyVM in my C++ code, i call this seti(). so the loop terminates, therefore my thread finishes executing and ends.
    Hope this helps
    tola.

  • Problems with a thread that records dvd on suse linux

    PLEASE HELP
    I am using SuSE linux, and I record dvd+/- RW with the program growisofs.
    By command line on the linux shell, growisofs records normally, but when I try to use the same line cone that I use in the shell in a java thread, it never stops recording, I mean, it records all data, but it apparently does not close the dvd session, for the grenn light on the drive never stops blinking, and I have to stop the proccess manually, because it never releases the dvd drive.
    I use the thread in a large program, but for debugging this I have made a simple program, whose error is the same.
    the code is:
            String s = "/usr/local/bin/growisofs -speed=1 -M /dev/dvdram  -V MIS27 -A growisofs -P MedImServer " +
               " -p MedImServer -sysid Linux -J -R -l -relaxed-filenames -allow-lowercase -allow-multidot  /windows/C/online";
           Process p;
                try {
                    p = Runtime.getRuntime().exec(s);
                    p.waitFor();
                catch (IOException ex) {
                    JOptionPane.showMessageDialog(null,"erro no runtime");
                    System.exit(0);
                catch (InterruptedException ex1) {
                    JOptionPane.showMessageDialog(null,"erro no waitfor");
                    System.exit(0);
                }with JBuilder 9 debug, I realized that it freezes at the moment of "p.waitFor()".
    I thought that it was a problem with the recording software, but it is not: the same command line that I use in the program I have used in the Linux shell and it recorded perfectly. The program does not require any user interaction but the command line I wrote before. The problem with the Java program is that it records all data, but never returns from the process. It's not a problem with the software, for it records perfectly when it's not called within the Java program, so I imagine that it is some funny thing in either the Runtime.getRuntime().exec(...) or the p.wait().
    Better yet:
    Is there a way to record dvds with a java command instead with an exteranal program?
    This would be the heaven...
    IF it is possible, do it require some sun package?
    Thans
    Tiago

    Did you mean like this?
            Process p = null;
            String s = null;
            File f;
            try {
                f = new File(pathtmp);
                f.mkdir();
                if(VERBOSE) Log.info(GRAVA_LOG_MARK + "Pasta " + f.getPath() + " criada");
                for (Iterator iter = estudos.iterator(); iter.hasNext(); ) {
                    HashMap item = (HashMap) iter.next();
                    String id = (String) item.get("id_paciente");
                    String dt_hr = (String) item.get("dt_hr_estudo");
                    String estudo = id + "." + dt_hr;
                    File dir = new File(distriOff.path);
                    String[] arquivos = dir.list(new FiltroInicio(estudo));
                    for (int i = 0; i < arquivos.length; i++) {
                        File src = new File(distriOff.path + arquivos);
    File dest = new File(pathtmp + arquivos[i]);
    try {
    Util.copy(src, dest);
    catch (Throwable ex) {
    Log.error(mensagem + " " + ex);
    prop.enviaMsg(mensagem + " " + ex);
    throw new ExcecaoDistribuicao(ExcecaoDistribuicao.ERRO, mensagem + " " + ex);
    String os = System.getProperty("os.name");
    String modo;
    if(midia.getEspaco_disponivel_midia() == midia.getTamanho_midia()) {
    //primeira gravagco
    modo = "-Z";
    else {
    //gravagco de novas segues
    modo = "-M";
    String speed = "-speed=1";
    String cmd = "/usr/local/bin/growisofs " + speed + " " + modo + " " + dvdDevice + " "
    +" -V " + prop.getIdMidiaAtual() + " -A growisofs -P MedImServer "
    +"-p MedImServer -sysid " + os + " -J -R -l -relaxed-filenames -allow-lowercase -allow-multidot " + pathtmp;
    p = Runtime.getRuntime().exec(cmd);
    p.waitFor();
    catch (IOException ex){
    Log.error(mensagem + " " + ex);
    prop.enviaMsg(mensagem + " " + ex);
    throw new ExcecaoDistribuicao(ExcecaoDistribuicao.ERRO, mensagem + " " + ex);
    catch (InterruptedException ex) {
    Log.error(mensagem + " " + ex);
    prop.enviaMsg(mensagem + " " + ex);
    throw new ExcecaoDistribuicao(ExcecaoDistribuicao.ERRO, mensagem + " " + ex);
    try
    BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));
    // Lj saida padrco do comando
    while ( (s = stdInput.readLine()) != null)
    Log.info(GRAVA_LOG_MARK + s);
    catch (IOException ex)
    Log.error(mensagem + " " + ex);
    prop.enviaMsg(mensagem + " " + ex);
    throw new ExcecaoDistribuicao(ExcecaoDistribuicao.ERRO, mensagem + " " + ex);
    try
    BufferedReader stdErr = new BufferedReader(new InputStreamReader(p.getErrorStream()));
    // Lj qualquer erro do comando
    while ( (s = stdErr.readLine()) != null) {
    Log.info("Processo de Gravagco: " + s);
    if((s.indexOf("failed") != -1) || (s.indexOf("error") != -1) || (s.indexOf("unable") != -1)) {
    Log.error(mensagem + " " + s);
    prop.enviaMsg(mensagem + " " + s);
    throw new ExcecaoDistribuicao(ExcecaoDistribuicao.ERRO, mensagem + " " + s);
    catch (IOException ex)
    Log.error(mensagem + " " + ex);
    prop.enviaMsg(mensagem + " " + ex);
    throw new ExcecaoDistribuicao(ExcecaoDistribuicao.ERRO, mensagem + " " + ex);
    I tried to execute it, and it indeed doesn't freeze, but it doesn't record a thing either...
    now it doesn't even wait for the thread, which is VERY weird: it does not record a thing!!! It just passes by the line 'p.waitFor()'...
    Any sugestion?
    By the way, thanks for helping me...
    Tiago

Maybe you are looking for

  • Error While opening a JSP page from inside form window

    Hi, I am using Oracle EBS 12.0.4 and using IE 7 as my browser. Now when i am trying to open a jsp page form EBS Home page (after login) it is opening perfectly.The problem occurs when i tried to open jsp pages from inside form window. E.g. From the h

  • Can I use the iPod touch 3rd generation with these speakers?

    I wanna buy some speakers. But now I feel a bit uneasy. My question: Can I use the iPos touch 3rd generation ( http://store.apple.com/ch-de/browse/home/shopipod/family/ipodtouch 32 GB ) with these speakers ( http://store.apple.com/ch-de/product/TR142

  • Address Book on MacBook Pro does not sync with IPad or Iphone

    I have a MacBook Pro with OS10.7.4.  When I add a new address it does not sync with my IPad or IPhone.  However, adding an address on the IPad or IPhone it will appear on the IMac Pro.  I have checked to make sure that the Address Book on my IMac is

  • Can access enforcer be implemented with going through the SOD check.

    Hi All, I have couple of questions regarding Access enforcer: 1. Can Access enforcer be implemented with going through the SOD check? 2. Can we provision roles for the project team using Access Enforcer (without having a million SOD conflicts which n

  • Can you set up a search specifically for Bookings in BC?

    I have a dive client who wants to have the next 3 months of events setup on the website so this could mean 30 - 50 events in advance. So I am going to build the events in the Bookings Module and link the payments form to each event BUT I would also l