<html><body><div style="color:#000; background-color:#fff; font-family:HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif;font-size:10pt"><div style="" class="" id="yiv8943945803"><div style="" class=""><div class="" style="color:#000;background-color:#fff;font-family:HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif;font-size:10pt;"><div style="" class="" id="yiv8943945803yui_3_16_0_1_1409544295678_10646">Hello,</div><div style="" class="" id="yiv8943945803yui_3_16_0_8_1409544295678_8"><br style=""></div><div class="" style="color:rgb(0, 0, 0);font-size:13.3333px;font-family:HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif;background-color:transparent;font-style:normal;" id="yiv8943945803yui_3_16_0_8_1409544295678_10">I don't know if this type of question fits here but I'll try anyway. This is my first participation on a mailing list.</div><div class=""
 id="yiv8943945803yui_3_16_0_8_1409544295678_19" style="color:rgb(0, 0, 0);font-size:13.3333px;font-family:HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif;background-color:transparent;font-style:normal;"><br style="" class="" id="yiv8943945803yui_3_16_0_8_1409544295678_24"></div><div class="" id="yiv8943945803yui_3_16_0_8_1409544295678_21" style="color:rgb(0, 0, 0);font-size:13.3333px;font-family:HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif;background-color:transparent;font-style:normal;">Are we sure that the client and server compilers do not do aggressive inlining for mutable objects on multithreaded environments?<br style="" class="">For example, I'm thinking about the plus operator on Strings. This plus operator uses a new instance of the mutable class StringBuilder. <br><br>I modified this example on the web where there is a single instance of MultithreadingClass being shared by multiple
 threads.<br style="" class=""><pre style="" class=""><code style="" class=""><span style="" class="">public class MultiThreadingClass extends SomeThirdPartyClassThatExtendsObject{<br style="" class="">    private String somePath = "c:\\somepath";   <br style="" class="">    public void beginmt(String st) throws IOException {<br style="" class="">        //st is a thread number<br style="" class="">        st = new File(somePath).getCanonicalPath()+"\\"+st;<br style="" class="">        System.out.println(st);<br style="" class="">    }<br style="" class="">}<br style="" class=""></span></code><code style="" class=""><span style="" class=""></span></code></pre>There is unsafe publication due to somePath not being final but I'm thinking about possible unsafe publication on the StringBuilder when using the + operator.  I'm just wondering whether when there are a lot of calls to 
concatenation on multiple threads using the single instance of MultiThreadingClass, the compiler will maintain a single Stringbuilder instance for all the currently running threads.<br style="" class=""><br style="" class="">I'm totally new to viewing Hotspot code and I only partly know stringopts.cpp so I'd be grateful if someone could point me to the codes (and some tutorials on the internals at the code level) to this. :-)<br style="" class=""><br style="" class="">Thank you very much and regards,<br style="" class=""><br style="" class="">Bimbo<br style="" class="" id="yiv8943945803yui_3_16_0_1_1409544295678_10667"></div><div class="" id="yiv8943945803yui_3_16_0_8_1409544295678_21" style="color:rgb(0, 0, 0);font-size:13.3333px;font-family:HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif;background-color:transparent;font-style:normal;"> </div></div></div></div></div></body></html>