Anton, there have been a few bug fixes since the JDK you're using. You really should use JDK 1.3.1_03. I don;t know how much of a diff it will make, but it's worth a shot. I've had a few problems with applets with previous versions to 1.3.1_03 and it was worth the switch. It seems that IDEA behaves better with it too.
R On Fri, 2002-04-12 at 08:46, Anton Shahu wrote: > The debugger has a hard time switching contexts and apparently > loses track if the next breakpoint happens in another thread as shown > in the two attached files. > > Place a breakpoint at respectively readValues and writeValues of RWTest > and debug RWTest. The first times the debugger will stop at readValues > but then the next breakpoint seems never to be reached. The CPU is at > almost 0% and the JVM has clearly stopped, but Idea doesn't know this... > > The same thing works like clockwork with Bugseeker. JDK used > > java -version > java version "1.3.1" > Java(TM) 2 Runtime Environment, Standard Edition (build 1.3.1-b24) > Java HotSpot(TM) Client VM (build 1.3.1-b24, mixed mode) > > socket or memory have same effect, but chosing classic seems to solve > the issue. The help file says otherwise... > > Idea build 616 > > Anton > > _________________________________________________________________ > Get your FREE download of MSN Explorer at http://explorer.msn.com/intl.asp. > ---- > > > public class RWLock { > > private int readers; > private int writersWaiting; > > private boolean writingInProgress; > private int maxWritersWaiting = 1; > > RWLock(int maxWW) { > maxWritersWaiting = maxWW; > } > > synchronized public void getReadLock() { > while (writingInProgress | (writersWaiting >= maxWritersWaiting)) { > try { > wait(); > } catch (InterruptedException ie) { > } > } > readers++; > } > > synchronized public void releaseReadLock() { > readers--; > if ((readers == 0) & (writersWaiting > 0)) { > notify(); > } > } > > synchronized public void getWriteLock() { > writersWaiting++; > while ((readers > 0) | writingInProgress) { > try { > wait(); > } catch (InterruptedException ie) { > } > } > writersWaiting--; > writingInProgress = true; > } > > synchronized public void releaseWriteLock() { > writingInProgress = false; > notifyAll(); > } > > public int getReaders() { > return readers; > } > > public int getWaitingWriters() { > return writersWaiting; > } > > } > > /* > * $Log:$ > */ > ---- > > public class RWTest { > int arr[]; > String name; > RWLock lock; > > public static void main(String args[]) { > RWTest rwtest = new RWTest(); > } > > > RWTest() { > lock = new RWLock(3); > arr = new int[3]; > name = "name"; > for (int i = 0; i < 20; i++) > (new ReaderThread()).start(); > > for (int j = 0; j < 4; j++) > (new WriterThread()).start(); > } > > public void readValues() { > lock.getReadLock(); > System.out.println("Read Lock obtained by " + > Thread.currentThread().getName()); > System.out.println(" >>>> Readers active = " + > lock.getReaders()); > System.out.println(" >>>> Writers waiting = " + > lock.getWaitingWriters()); > for (int i = 0; i < arr.length; i++) > System.out.print(arr[i] + " "); > System.out.println(name); > //PLACE BREAKPOINT IN NEXT LINE > System.out.println("Read Lock to be released by " + > Thread.currentThread().getName()); > lock.releaseReadLock(); > } > > public void writeValues() { > lock.getWriteLock(); > System.out.println("Write Lock obtained by " + > Thread.currentThread().getName()); > int value = (int) (Math.random() * 100); > for (int i = 0; i < arr.length; i++) > arr[i] = value; > name = "" + value; > //PLACE BREAKPOINT IN NEXT LINE > System.out.println("Write Lock to be released by " + > Thread.currentThread().getName()); > lock.releaseWriteLock(); > } > > class ReaderThread extends Thread { > public void run() { > while (true) { > try { > readValues(); > Thread.sleep((int) (Math.random() * 50)); > } catch (Exception e) { > } > } > } > } > > class WriterThread extends Thread { > public void run() { > while (true) { > try { > writeValues(); > Thread.sleep((int) (Math.random() * 100)); > } catch (Exception e) { > } > } > } > } > } > _______________________________________________ Eap-list mailing list [EMAIL PROTECTED] http://www.intellij.com/mailman/listinfo/eap-list
