From owner-java@jp.FreeBSD.org Fri Aug 30 19:56:56 2002
Received: (from daemon@localhost)
	by castle.jp.FreeBSD.org (8.11.6+3.4W/8.11.3) id g7UAuuJ16163;
	Fri, 30 Aug 2002 19:56:56 +0900 (JST)
	(envelope-from owner-java@jp.FreeBSD.org)
Received: from mx1.aist.go.jp (mx1.aist.go.jp [150.29.246.133])
	by castle.jp.FreeBSD.org (8.11.6+3.4W/8.11.3) with ESMTP/inet id g7UAuu316158
	for <java@jp.FreeBSD.org>; Fri, 30 Aug 2002 19:56:56 +0900 (JST)
	(envelope-from shudo@computer.org)
Received: from rpsmtp1.aist.go.jp
	by mx1.aist.go.jp  with ESMTP id g7UAutW22373
	for <java@jp.FreeBSD.org>; Fri, 30 Aug 2002 19:56:55 +0900 (JST)
	env-from (shudo@computer.org)
Received: from mail05.aist.go.jp
        by rpsmtp1.aist.go.jp  with ESMTP id g7UAusK18240
        for <java@jp.FreeBSD.org>; Fri, 30 Aug 2002 19:56:55 +0900 (JST)
        env-from (shudo@computer.org)
Received: from aist.go.jp
        by mail05.aist.go.jp  with ESMTP id g7UAurm14230
        for <java@jp.FreeBSD.org>; Fri, 30 Aug 2002 19:56:54 +0900 (JST)
        env-from (shudo@computer.org)
Message-Id: <20020830.195742.1025205368.shudoh@localhost>
To: java@jp.FreeBSD.org
From: shudo@computer.org
In-Reply-To: <20020727.052052.59459742.yamasa@ec.catv.ne.jp>
References: <20020724.012519.74758165.yamasa@ec.catv.ne.jp>
	<20020724192325.55472fab.daichi@ongs.co.jp>
	<20020727.052052.59459742.yamasa@ec.catv.ne.jp>
X-Mailer: Mew version 2.2 on XEmacs 21.4.8 (Honest Recruiter)
Mime-Version: 1.0
Content-Type: Text/Plain; charset=iso-2022-jp
Content-Transfer-Encoding: 7bit
Reply-To: java@jp.FreeBSD.org
Precedence: list
Date: Fri, 30 Aug 2002 19:57:42 +0900
X-Sequence: java 200
Subject: [java 200] Re: Java Memory Model
Errors-To: owner-java@jp.FreeBSD.org
Sender: owner-java@jp.FreeBSD.org
X-Originator: shudo@computer.org
X-Distribute: distribute version 2.1 (Alpha) patchlevel 24e+020829

$B<sF#$G$9!#(B
$B:#$5$i$G$9$,!"FI$s$G$$$J$+$C$?0JA0$N%a!<%k$r=hM}$7$F$$$^$9!#(B

> Date: Sat, 27 Jul 2002 05:20:52 +0900 (JST)

> $BBg@P$G$9!#(B

|  class Foo {
|    private Helper helper = null;
|    public Helper getHelper() {
|      if (helper == null)
|        synchronized(this) {
|          if (helper == null) 
|            helper = new Helper();
|        }
|      return helper;
|      }
|    // other functions and members...
|    }

> helper = new Helper();
> $B$r0J2<$N$h$&$K=q$-49$($F$_$^$9!#(B

> $B$3$l$O!"$5$i$K0J2<$N$h$&$K=q$-49$($i$l$k$+$b$7$l$^$;$s!#(B
> ---
> helper = malloc(sizeof(Helper)); // (1)
> helper.Helper();                 // (2)
> ---

> $B$5$F!"(B(1)$B$H(B(2)$B$N4V$KJL$N%9%l%C%I$,(B getHelper() $B$r8F$S=P$7$?$i(B
> $B$I$&$J$k$G$7$g$&$+!#(B
> $B$3$N>l9g!"(Bhelper != null $B$K$b$+$+$o$i$:!"$=$N;2>H@h$N%$%s%9%?%s%9$O(B
> $B$^$@%3%s%9%H%i%/%?$,8F$S=P$5$l$F$$$J$$$3$H$K$J$j$^$9!#(B
>
> $B$3$N$h$&$J;vBV$rHr$1$k$?$a$K$O!"%3%s%9%H%i%/%?Fb$G$NF0:n$,(B
                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^
> $B%a%$%s%a%b%j$KH?1G$5$l$k$N$rBT$C$F$+$i!"JQ?t(Bhelper$B$X;2>H$rBeF~$9$k(B
  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ (1)
> $B$h$&$K$9$l$P$h$$$N$G$O$J$$$+!"$H;W$o$l$k$+$b$7$l$^$;$s!#(B
> $B$7$+$7!"$=$l$G$b$^$@IT==J,$G$9!#(B

$B=<J,!?IT=<J,$H$$$&LdBj$G$O$J$/$F!"(B
  $BJQ?t(B helper $B$X$NBeF~$r@h$K9T$&$3$H$,(B ($B8@8l;EMM>e(B) $B5v$5$l$F$$$k$N$G!"(B
  $B$=$b$=$b!">e5-$N(B (1) $B$r6/@)$5$;$k$3$H$O$G$-$J$$!"(B
$B$H$$$&M}2r$,@5$7$$$N$G$O$J$$$+$H;W$$$^$9!#(B

> $B$J$<$J$i!"(BJMM$B$N$b$H$G$O!"$$$/$i%a%$%s%a%b%j$,JQ99$5$l$F$b(B
> read $B$H(B load $B$,5/$3$i$J$$8B$j$=$NJQ99$OB>$N%9%l%C%I$+$i(B
> $B8+$k$3$H$,$G$-$J$$$+$i$G$9!#(B
> read $B$H(B load $B$r6/@)$9$k$K$O!"7k6I(B synchronized $B$G%m%C%/$r(B
> $B9T$J$&$7$+$J$$$o$1$G$9!#(B

$B$=$l$O$=$NDL$j$J$N$G$9$,!"$3$3$G$O!"(B
read,load $B$,5/$3$i$J$$$3$H$,LdBj$r5/$3$7$F$$$k$o$1$G$O$"$j$^$;$s!#(B
$BJL%9%l%C%I$+$i(B helper $B$NJQ998e$NCM$,8+$($F$$$F!"(B
$B$=$N>u67$GLdBj$,5/$-$F$$$k$o$1$G$9!#(B

DCL $B$NLdBj$O!"$3$&$$$&$3$H$@$HM}2r$7$F$^$9(B:

  $B%m%C%/$NA0$K(B if (helper == null) $B$H>r7oH=CG$7$F$*$/$3$H$G(B
  $BL5BL$J%m%C%/$rHr$1$h$&$H$7$F$$$k$o$1$G$9$,!"(B
  $B@2$l$F%m%C%/$rHr$1$i$l$?$H;W$C$?$i!"(B
  $BCfESH>C<$J>uBV$N;2>H(B ($B%3%s%9%H%i%/%?L$40(B) $B$r<j$KF~$l$F$7$^$C$?!*(B

  $B%m%C%/$7$F$*$1$P!"%3%s%9%H%i%/%?40N;$^$G@);_$7$F$b$i$($?$N$K$M!#(B

Kazuyuki Shudo/$B<sF#0l9,(B   $B;d$r$?$P$M$J$$$G(B $B$"$i$;$$$H$&$N2V$N$h$&$K(B
  shudo@computer.org   http://www.shudo.net/
