<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress/2.2.1" -->
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
	<title>Comments on: Сколько нужно потоков для обработки пользовательских запросов или крайности при использовании Singleton</title>
	<link>http://www.javenue.info/post/83</link>
	<description>Блог разработчика о Java и родственных технологиях</description>
	<pubDate>Sun, 05 Feb 2012 00:29:53 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.2.1</generator>

	<item>
		<title>By: assent</title>
		<link>http://www.javenue.info/post/83#comment-93450</link>
		<author>assent</author>
		<pubDate>Fri, 03 Feb 2012 12:04:05 +0000</pubDate>
		<guid>http://www.javenue.info/post/83#comment-93450</guid>
		<description>public class Singleton {
private SingletonStatic() {}
private static Singleton instance = new Singleton();
public static Singleton getInstance() {
return instance;
}
}

не пойму зачем в примере cleam используется private static class InstanceHolder??? можно ж без него)</description>
		<content:encoded><![CDATA[<p>public class Singleton {<br />
private SingletonStatic() {}<br />
private static Singleton instance = new Singleton();<br />
public static Singleton getInstance() {<br />
return instance;<br />
}<br />
}</p>
<p>не пойму зачем в примере cleam используется private static class InstanceHolder??? можно ж без него)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: toster</title>
		<link>http://www.javenue.info/post/83#comment-91432</link>
		<author>toster</author>
		<pubDate>Wed, 30 Nov 2011 10:41:51 +0000</pubDate>
		<guid>http://www.javenue.info/post/83#comment-91432</guid>
		<description>Первое, автору огромное спасибо за работу, очень понравилось, то как Вы излагаете материал, без лишних усложнений и философии, всё практично и наглядно. Это и есть соль, а остальное - желающие смогут более детально исследовать сами уже понимая суть проблемы. 

Второе, я прекрасно понимаю людей которые найдя в написанном "ошибку" начинают поливать автора помоями, но вот что эти люди сами понимают себя я сильно сомневаюсь. Господа - любители переносить своё отношение к коду на личность автора, решайте свои проблемы пока они не решили за вас вашу судьбу.</description>
		<content:encoded><![CDATA[<p>Первое, автору огромное спасибо за работу, очень понравилось, то как Вы излагаете материал, без лишних усложнений и философии, всё практично и наглядно. Это и есть соль, а остальное - желающие смогут более детально исследовать сами уже понимая суть проблемы. </p>
<p>Второе, я прекрасно понимаю людей которые найдя в написанном &#8220;ошибку&#8221; начинают поливать автора помоями, но вот что эти люди сами понимают себя я сильно сомневаюсь. Господа - любители переносить своё отношение к коду на личность автора, решайте свои проблемы пока они не решили за вас вашу судьбу.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Руслан</title>
		<link>http://www.javenue.info/post/83#comment-75702</link>
		<author>Руслан</author>
		<pubDate>Fri, 11 Mar 2011 11:49:54 +0000</pubDate>
		<guid>http://www.javenue.info/post/83#comment-75702</guid>
		<description>Разве реализация вашего друга быстрее, чем DCL на основе volatile? Ведь у вашего друга все равно остается volatile-read при каждом обращении к синглетону -- а это главная дырка в производительности на многопроцессорных системах.</description>
		<content:encoded><![CDATA[<p>Разве реализация вашего друга быстрее, чем DCL на основе volatile? Ведь у вашего друга все равно остается volatile-read при каждом обращении к синглетону &#8212; а это главная дырка в производительности на многопроцессорных системах.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: artemv</title>
		<link>http://www.javenue.info/post/83#comment-63843</link>
		<author>artemv</author>
		<pubDate>Sun, 17 Jan 2010 17:37:38 +0000</pubDate>
		<guid>http://www.javenue.info/post/83#comment-63843</guid>
		<description>@cleam предложил луч?ий вариант*(только как-то робко и final забыл).

*потому что: 
- он threadsafe(jvm гарантирует - только один поток загрузит внутренний класс ? инициализирует статические поля)
- он lazy-loading(внутренний класс не загрузится пока к нему не обрати?ься)
- он прост.</description>
		<content:encoded><![CDATA[<p>@cleam предложил луч?ий вариант*(только как-то робко и final забыл).</p>
<p>*потому что:<br />
- он threadsafe(jvm гарантирует - только один поток загрузит внутренний класс ? инициализирует статические поля)<br />
- он lazy-loading(внутренний класс не загрузится пока к нему не обрати?ься)<br />
- он прост.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: ivan</title>
		<link>http://www.javenue.info/post/83#comment-61312</link>
		<author>ivan</author>
		<pubDate>Tue, 03 Nov 2009 14:26:16 +0000</pubDate>
		<guid>http://www.javenue.info/post/83#comment-61312</guid>
		<description>Очень уж для меня все это сложно пока выглядит. Почему на программиста не по?ел учиться, жалею теперь. А самому, по книжкам, усидчивости не хватает заниматься. Тяжело без наставника.</description>
		<content:encoded><![CDATA[<p>Очень уж для меня все это сложно пока выглядит. Почему на программиста не по?ел учиться, жалею теперь. А самому, по книжкам, усидчивости не хватает заниматься. Тяжело без наставника.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Владимир</title>
		<link>http://www.javenue.info/post/83#comment-60454</link>
		<author>Владимир</author>
		<pubDate>Fri, 09 Oct 2009 12:18:25 +0000</pubDate>
		<guid>http://www.javenue.info/post/83#comment-60454</guid>
		<description>А такой вариант ( без volatile ) будет работать? &lt;code&gt;  public final class Singleton {
    private static Singleton instance;
    private Singleton() {
    }
    public static Singleton getInstance() {
      if (instance == null) {
        return innerGetInstance();
      } else
      return instance;
    }
    private static synchronized Singleton innerGetInstance() {
      if (instance == null) {
        instance = new Singleton();
      }
      return instance;
    }
  }
&lt;/code&gt; 
? можно поподробнее про public enum Singleton { //Реальный сингельтон
INSTANCE;
}  ( куда писать реализацию класса и когда он будет создаваться? )</description>
		<content:encoded><![CDATA[<p>А такой вариант ( без volatile ) будет работать? <code>  public final class Singleton {<br />
    private static Singleton instance;<br />
    private Singleton() {<br />
    }<br />
    public static Singleton getInstance() {<br />
      if (instance == null) {<br />
        return innerGetInstance();<br />
      } else<br />
      return instance;<br />
    }<br />
    private static synchronized Singleton innerGetInstance() {<br />
      if (instance == null) {<br />
        instance = new Singleton();<br />
      }<br />
      return instance;<br />
    }<br />
  }<br />
</code><br />
? можно поподробнее про public enum Singleton { //Реальный сингельтон<br />
INSTANCE;<br />
}  ( куда писать реализацию класса и когда он будет создаваться? )</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Fox</title>
		<link>http://www.javenue.info/post/83#comment-51056</link>
		<author>Fox</author>
		<pubDate>Wed, 22 Apr 2009 20:02:04 +0000</pubDate>
		<guid>http://www.javenue.info/post/83#comment-51056</guid>
		<description>Так это-ж Jetty co своим NIO... а Tomcat то 5000 потоков создаст(нет не создаст :) в реальности) так причом тут сингельтон...
А если говорить о сингельтонах то с приведёнными вы?е примерами есть несколько проблем такие как -
AccessibleObject.setAccessible и возможно проблема сериализации...

Следует просто писать

public enum Singleton {  //Реальный сингельтон
INSTANCE;
}

Удачи</description>
		<content:encoded><![CDATA[<p>Так это-ж Jetty co своим NIO&#8230; а Tomcat то 5000 потоков создаст(нет не создаст <img src='http://www.javenue.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> в реальности) так причом тут сингельтон&#8230;<br />
А если говорить о сингельтонах то с приведёнными вы?е примерами есть несколько проблем такие как -<br />
AccessibleObject.setAccessible и возможно проблема сериализации&#8230;</p>
<p>Следует просто писать</p>
<p>public enum Singleton {  //Реальный сингельтон<br />
INSTANCE;<br />
}</p>
<p>Удачи</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: cleam</title>
		<link>http://www.javenue.info/post/83#comment-50942</link>
		<author>cleam</author>
		<pubDate>Tue, 21 Apr 2009 15:59:44 +0000</pubDate>
		<guid>http://www.javenue.info/post/83#comment-50942</guid>
		<description>Ещё один вариант:

public class Singleton {
    private static class InstanceHolder {
        private static Singleton instance = new Singleton();
    }
    
    public static Singleton getInstance() {
        return InstanceHolder.instance;
    }
}

Ну а вообще синглтоны зло, да.</description>
		<content:encoded><![CDATA[<p>Ещё один вариант:</p>
<p>public class Singleton {<br />
    private static class InstanceHolder {<br />
        private static Singleton instance = new Singleton();<br />
    }</p>
<p>    public static Singleton getInstance() {<br />
        return InstanceHolder.instance;<br />
    }<br />
}</p>
<p>Ну а вообще синглтоны зло, да.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: ddfsqwe</title>
		<link>http://www.javenue.info/post/83#comment-50389</link>
		<author>ddfsqwe</author>
		<pubDate>Wed, 15 Apr 2009 13:07:24 +0000</pubDate>
		<guid>http://www.javenue.info/post/83#comment-50389</guid>
		<description>Спасибо, действительно интересно)</description>
		<content:encoded><![CDATA[<p>Спасибо, действительно интересно)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: c0nst</title>
		<link>http://www.javenue.info/post/83#comment-48456</link>
		<author>c0nst</author>
		<pubDate>Wed, 25 Mar 2009 21:59:33 +0000</pubDate>
		<guid>http://www.javenue.info/post/83#comment-48456</guid>
		<description>На счет:
private static Singleton instance = new Singleton();
Если немного усложнить пример и добавить какую-то константу в класс или еще что-то, то ленивость теряется. ?дея как раз в том, чтобы загрузка класса не влекла за собой создание инстанса.</description>
		<content:encoded><![CDATA[<p>На счет:<br />
private static Singleton instance = new Singleton();<br />
Если немного усложнить пример и добавить какую-то константу в класс или еще что-то, то ленивость теряется. ?дея как раз в том, чтобы загрузка класса не влекла за собой создание инстанса.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

