Date: Thu, 3 Jun 2004 12:08:10 -0400 From: Daniel Fisher <daniel.fisher@vt.edu> To: java@freebsd.org Subject: Re: possible threading problem Message-ID: <20040603120810.096a1975@psych.iad.vt.edu> In-Reply-To: <opr8zfpxqaydasmi@outgoing.local> References: <20040601154601.0869f5b4@psych.iad.vt.edu> <40BD7C06.5050205@noc.ntua.gr> <20040602095245.48cb3c44@psych.iad.vt.edu> <opr8zfpxqaydasmi@outgoing.local>
next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, 02 Jun 2004 21:42:59 +0200 Ronald Klop <ronald@cs.vu.nl> wrote: > On Wed, 2 Jun 2004 09:52:45 -0400, Daniel Fisher <daniel.fisher@vt.edu> > wrote: > > > On Wed, 02 Jun 2004 10:04:38 +0300 > > Panagiotis Astithas <past@noc.ntua.gr> wrote: > > > >> Daniel Fisher wrote: > >> > I'm experiencing a weird threading problem with jdk-1.4.2p6_3 that I > >> don't > >> > see on Linux. > >> > It looks like the BSD JDK is not honoring sychronize statements. > >> > Has anyone seen this before? > >> > If not, who should I send sample code to? > >> > >> Um, the list? > >> -- > >> Panagiotis Astithas > > > > Alrighty then.... > > attached is a tarball with the sample classes in it. > > Untar and cd into the directory. > > Execute: java -jar prop.jar > > These classes monitor the main.properties file and echo the changes to > > stdout. > > Edit main.properties while the java job is running. > > FreeBSD JVM throws an InterruptedIOException, Linux JVM does not throw an > > exception. > > Add debugging like, so you can make sure synchronized is (not) working. > synchronized (a) { > System.out.println("In a 1"); > ... > System.out.println("Out a 1"); > } > > If I recompile your program I get other results after modifying the > properties file. > java.lang.NoClassDefFoundError: prop/PropEvent > at prop.PropSingleton.removeProperties(PropSingleton.java:74) > at prop.PropMonitor.run(PropMonitor.java:71) > at java.lang.Thread.run(Thread.java:534) > > PropMonitor interrupts itself. Why? it's useless. > By the way if you don't do this your program works. > > Offtopic: > In PropMonitor you catch Exception. So you will mis all other possible > error messages from java. > If this is not just a test class I would rewrite it. > Why this: > try { > throw Exception(); > } catch (Exception) { > break; > } > > You can also just do break in stead of the exception. > And you can remove all the interrupt/interrupted calls. Only keep the > boolean run. > And even nicer than the break is setting run = false to end the while. > > But only removing the stopMonitor call from PropMonitor.run() will also > make it work. :-) > > Ronald. > I think you've missed the point. The question is, why does the BSD JVM behave differently and does it need fixing? -- Daniel Fisher
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20040603120810.096a1975>