JavaÊÇÈçºÎ¹ÜÀíÄÚ´æ
ΪÁËÅжÏJavaÖÐÊÇ·ñÓÐÄÚ´æÐ¹Â¶£¬ÎÒÃÇÊ×ÏȱØÐëÁ˽âJavaÊÇÈçºÎ¹ÜÀíÄÚ´æµÄ¡£JavaµÄÄÚ´æ¹ÜÀí¾ÍÊǶÔÏóµÄ·ÖÅäºÍÊÍ·ÅÎÊÌâ¡£ÔÚJavaÖУ¬³ÌÐòÔ±ÐèҪͨ¹ý¹Ø¼ü×ÖnewΪÿ¸ö¶ÔÏóÉêÇëÄÚ´æ¿Õ¼ä (»ù±¾ÀàÐͳýÍâ)£¬ËùÓеĶÔÏó¶¼ÔÚ¶Ñ (Heap)ÖзÖÅä¿Õ¼ä¡£ÁíÍ⣬¶ÔÏóµÄÊÍ·ÅÊÇÓÉGC¾ö¶¨ºÍÖ´Ðеġ£ÔÚJavaÖУ¬ÄÚ´æµÄ·ÖÅäÊÇÓɳÌÐòÍê³ÉµÄ£¬¶øÄÚ´æµÄÊÍ·ÅÊÇÓÐGCÍê³ÉµÄ£¬ÕâÖÖÊÕÖ§Á½ÌõÏߵķ½·¨È·Êµ¼ò»¯Á˳ÌÐòÔ±µÄ¹¤×÷¡£µ«Í¬Ê±£¬ËüÒ²¼ÓÖØÁËJVMµÄ¹¤×÷¡£ÕâÒ²ÊÇJava³ÌÐòÔËÐÐËٶȽÏÂýµÄÔÒòÖ®Ò»¡£ÒòΪ£¬GCΪÁËÄܹ»ÕýÈ·ÊͷŶÔÏó£¬GC±ØÐë¼à¿ØÃ¿Ò»¸ö¶ÔÏóµÄÔËÐÐ״̬£¬°üÀ¨¶ÔÏóµÄÉêÇë¡¢ÒýÓᢱ»ÒýÓᢸ³ÖµµÈ£¬GC¶¼ÐèÒª½øÐÐ¼à¿Ø¡£
¼àÊÓ¶ÔÏó״̬ÊÇΪÁ˸ü¼Ó׼ȷµØ¡¢¼°Ê±µØÊͷŶÔÏ󣬶øÊͷŶÔÏóµÄ¸ù±¾ÔÔò¾ÍÊǸöÔÏó²»ÔÙ±»ÒýÓá£
ΪÁ˸üºÃÀí½âGCµÄ¹¤×÷ÔÀí£¬ÎÒÃÇ¿ÉÒÔ½«¶ÔÏó¿¼ÂÇΪÓÐÏòͼµÄ¶¥µã£¬½«ÒýÓùØÏµ¿¼ÂÇΪͼµÄÓÐÏò±ß£¬ÓÐÏò±ß´ÓÒýÓÃÕßÖ¸Ïò±»Òý¶ÔÏó¡£ÁíÍ⣬ÿ¸öÏ̶߳ÔÏó¿ÉÒÔ×÷Ϊһ¸öͼµÄÆðʼ¶¥µã£¬ÀýÈç´ó¶à³ÌÐò´Ómain½ø³Ì¿ªÊ¼Ö´ÐУ¬ÄÇô¸Ãͼ¾ÍÊÇÒÔmain½ø³Ì¶¥µã¿ªÊ¼µÄÒ»¿Ã¸ùÊ÷¡£ÔÚÕâ¸öÓÐÏòͼÖУ¬¸ù¶¥µã¿É´ïµÄ¶ÔÏó¶¼ÊÇÓÐЧ¶ÔÏó£¬GC½«²»»ØÊÕÕâЩ¶ÔÏó¡£Èç¹ûij¸ö¶ÔÏó (Á¬Í¨×Óͼ)ÓëÕâ¸ö¸ù¶¥µã²»¿ ......
¡¡1¡¢¶öººÊ½
¡¡¡¡package singleton;
¡¡¡¡/**
¡¡¡¡* ¶öººÊ½µ¥Àý
¡¡¡¡* @author ½¯Ã÷Ô
¡¡¡¡*
¡¡¡¡*/
¡¡¡¡public class HungrySingleton {
¡¡¡¡/**jvm±£Ö¤instanceÖ»±»³õʼ»¯Ò»´Î*/
¡¡¡¡private static HungrySingleton instance = new HungrySingleton();
¡¡¡¡/**×èÖ¹ÍⲿʹÓÃnewʵÀý»¯¶ÔÏó*/
¡¡¡¡private HungrySingleton(){
¡¡¡¡}
¡¡¡¡/**
¡¡¡¡* »ñȡʵÀý
¡¡¡¡* @return ΨһµÄinstance
¡¡¡¡*/
¡¡¡¡public static HungrySingleton getInstance() {
¡¡¡¡return instance;
¡¡¡¡}
¡¡¡¡}
¡¡¡¡2¡¢ÀÁººÊ½
¡¡¡¡package singleton;
¡¡¡¡/**
¡¡¡¡* ÀÁººÊ½µ¥Àý
¡¡¡¡* @author ½¯Ã÷Ô
¡¡¡¡*
¡¡¡¡*/
¡¡¡¡public class LazySingleton {
¡¡¡¡/**
¡¡¡¡* ×èÖ¹Íâ½çʹÓÃnewʵÀý»¯¶ÔÏó
¡¡¡¡*/
¡¡¡¡private LazySingleton() {
¡¡¡¡}
¡¡¡¡/**
¡¡¡¡* Ö»ÓÐÔÚµ÷ÓÃgetInstance()ʱ´ËÀà²Å»á±»×°ÔØ
¡¡¡¡* ÔÚSingletonKerriganF.javaÖÐ˵Ã÷Á˼ÓÔØË³Ðò
¡¡¡¡*/
¡¡¡¡private static class SingletonHolder {
¡¡¡¡/**
¡¡¡¡* ¶ÔÏóʵÀý,jvm±£Ö¤Ö»³õʼ»¯Ò»´Î
¡¡¡¡*/
¡¡¡¡static final LazySingleton INSTANCE = new LazySingleton();
¡¡¡¡}
¡¡¡¡/**
¡¡¡¡* »ñÈ¡Ê ......
Ḭ̈߳²È« ʲôÊÇḬ̈߳²È«(thread-safe)£¿ Ò»¸öÀ࣬Èç¹ûÄܹ»ÔÚ¶àÏ̲߳¢·¢·ÃÎʵĻ·¾³Ï£¨²»¹ÜÏ̷߳ÃÎʵÄ˳Ðò£©ÕýÈ·±íÏÖ×Ô¼ºµÄÐÐΪ£¬²¢ÇÒÎÞÐèÍⲿµ÷ÓÃÌí¼ÓÈκÎͬ²½Ö®ÀàµÄ²Ù×÷£¬Õâ¸öÀà¾ÍÊÇḬ̈߳²È«µÄ¡£
Õâ¸öÕýÈ·ÐÔ¿ÉÒÔÕâôÀí½â£¬¾ÍÊÇ˵¶àÏ̷߳ÃÎʵĽá¹û²»»á²»Í¬ÓÚµ¥Ï̵߳ķÃÎÊ¡£
Ḭ̈߳²È«µÄÀ಻ÐèÒªÍⲿµ÷ÓÃÌṩÈκθ½¼ÓµÄͬ²½¡£ ÎÞ״̬(stateless)µÄÀàÓÀÔ¶ÊÇḬ̈߳²È«µÄ¡£
ʲôÊÇÎÞ״̬µÄÀࣿûÓÐʵÀý±äÁ¿(field)£¬Ò²Ã»ÓÐÒýÓÃÆäËüÀàµÄfield¡£ Ô×ÓÐÔ A race condition occurs when the correctness of a computation depends on the relative timing or interleaving of multiple threads by the runtime; in other words, when getting the right answer relies on lucky timing. ×î³£¼ûµÄrace conditionÊÇcheck-and-act¡£Òª·ÀÖ¹ÕâÖÖrace condition£¬ÎÒÃÇÐèÒªÔ×ÓÐԵIJÙ×÷¡£Ê²Ã´ÊÇÔ×ÓÐÔÄØ£¬¾ÍÊÇ˵£¬ÄãÕâ¸ö²Ù×÷ÔÚÖ´ÐеĹý³ÌÖУ¬¶ÔÓÚÄã²Ù×÷µÄ״̬ÉÏÆäËüµÄ²Ù×÷£¨°üÀ¨Äã×Ô¼º£©ÒªÃ´È«¶¼Ö´ÐÐÍêÁË£¬ÒªÃ´»¹Ã»¿ªÊ¼¡£
Ïë˵¾äͨ˳µÄÖйú»°ÔõôÕâôÄѰ¡£¬»¹ÊǸø³öÔÎİɣº Operations A and B are atomic with respect to each other if, from the perspecti ......
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
/**
* ÇóÖÊÊýºÍ£¬
* Èç:
* sum(1)=2=2
* sum(2)=2+3=5
* sum(3)=2+3+5=10
* sum(4)=2+3+5+7=17
* ...
* sum(7)=2+3+5+7+11+13+17=58
*/
System.out.println(Test.sum(7));
}
//²úÉúÖÊÊýnµÄºóÒ»¸öÖÊÊý£¬Èçn=2,return 3
public static int nextNum(int n){
n++;
for(int i=2;i<n;i++){
if(n%i==0){
//²»ÊÇÖÊÊý
n++;
continue;
}
}
return n;
}
//ÇóºÍ·½·¨
public static int sum(int count){
if(count <0) return 0;
int sum = 2;
int zn=2;
for(int i=0;i<count-1;i++){
zn=Test.nextNum(zn);
&nb ......
public class Person implements Serializable {
private String name;
private int age;
private GregorianCalendar birthday;
public Person(){
}
public Person(String name, int age, GregorianCalendar birthday){
this.name = name;
this.age = age;
this.birthday = birthday;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
  ......
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>ʵÀý1</TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD>
<BODY>
<!--ͼÏñµØÍ¼Ê¾Àý-->
<img src="ex.jpg" mce_src="ex.jpg" usemap="#mymap" width=320 height=180 border=0 alt=ͼÏñµØÍ¼>
<hr>
<map name=mymap>
<area shape="rect" mce_shape="rect" coords="0,0,80,180" mce_coords="0,0,80,180" href="#mark1" mce_href="#mark1"></area>
<area shape="rect" mce_shape="rect" coords="80,0,160,180" mce_coords="80,0,160,180" href="#mark2" mce_href="#m ......
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>ʵÀý1</TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD>
<BODY>
<!--ͼÏñµØÍ¼Ê¾Àý-->
<img src="ex.jpg" mce_src="ex.jpg" usemap="#mymap" width=320 height=180 border=0 alt=ͼÏñµØÍ¼>
<hr>
<map name=mymap>
<area shape="rect" mce_shape="rect" coords="0,0,80,180" mce_coords="0,0,80,180" href="#mark1" mce_href="#mark1"></area>
<area shape="rect" mce_shape="rect" coords="80,0,160,180" mce_coords="80,0,160,180" href="#mark2" mce_href="#m ......