javaµÄ¶àÏß³Ìͬ²½»¥³â:synchronizedµÄÂÒÓÃ
ÔÚjavaµÄ¶àÏß³Ìͬ²½»¥³â´¦ÀíÖÐ,synchronizedÊDZ𲻿ÉÉٵĶ«Î÷.
µ«ÊÇÈç¹û²»ÇåÎúµÄ±à³ÌµÄ»°,Ò²¾ÍÊÇÂÒÓÃsynchronizedµÄ»°,ËÀËøµÄ·¢Éú¾ÍÊÇÀëÄãºÜ½üµÄ»°ÌâÁË.
ÔÚÇ°ÃæµÄÒ»¸öά»¤Öоͷ¢ÏÖÒ»¸öËÀËøµÄbug.¾¿ÆäÔÒòÊÇ¿ª·¢ÕßûÓÐÕæÕýÃ÷°×¶àÏ̵߳Äͬ²½»¥³â,ûÓÐÒâʶµ½ËÀËøµÄ·¢Éú,»òÕß˵×Ô¼ºÈÏΪдµÄ´úÂë²»»á·¢ÉúËÀËø.
ËÀËøµÄ·¢ÉúÒ»°ã²¢²»ÊǺÜÈÝÒ×ÔÙÏÖµÄ.Ò»µ©·¢ÉúÁ˵÷²é,È·È϶¼»á»¨·ÑºÜ¶àʱ¼ä.ÌØ±ðÊǶԴóÐÍÍøÕ¾À´Ê±ÕâÖÖÏÖÏóµÄ·¢Éúʱ²»¿ÉÔÁµÄ.
»¥³â´¦ÀíÖÐËø·½·¨ºÍËø¿é. ¸Ð¾õÊÇÔÚËø¿éµÄ´¦ÀíÖÐÈÝÒ×ÂÒÓÃsynchronized.
ÔÚÄǸöά»¤µÄÖеĴúÂëÂß¼:
·½·¨AÖеÄÈçϵĴ¦Àí
×¼±¸´¦ÀíµÄ´úÂë1
synchronized (this) {
´¦Àí1
}
×¼±¸´¦ÀíµÄ´úÂë2
synchronized (this) {
´¦Àí2
}
ÆäËû´¦Àí
ÕâÑùÓÃÒ»¸ö·½·¨ÖаÑ×Ô¼ºÕâ¸ö¶ÔÏóËøÁËÁ½´Î.ËÀËøµÄ·¢Éú¾ÍÊÇÓпÉÄܵÄÁË.
ÔÚÉÏÃæµÄÄǸöÎÊÌâ´úÂëÖÐ,Èç¹ûÊÇËø×Ô¼ºµÄ»°,ÔÚÒ»¸ö·½·¨ÖоͲ»ÄܽøÐжà´ÎËø.
ÆäËûµÄ¶àÏ̻߳¹ÓкܶàºÜ¶àÐèÒªµÄ×¢ÒâµÄ,ÉÏÃæÖ»ÊǾÍÊÂÂÛʼòµ¥ËµÁËÒ»ÏÂÅöµ½µÄÎÊÌâ.
Ïà¹ØÎĵµ£º
Ö÷Ïß³ÌÖУº
InitThread initThread=new InitThread(new Semaphore(0));//³õʼ»¯Ò»¸ö×ÓỊ̈߳¬´«Ò»¸ö³õֵΪ0µÄÐźÅÁ¿¸øËü
Display.getDefault().asyncExec(initThread);
try {//´Ë´¦»á¹ÒÆð£¬Ö±µ½×ÓÏß³ÌÍê³É¹¤×÷£¬ÐÞ¸ÄÁËÐźÅÁ¿µÄÖµ£¬Ö÷Ï̲߳Żá¼ÌÐø
initThread.getSemaphore().acquire();
} catch (Inte ......
ÒÔÏÂÊǼÆËãÁ½¸öÊýÎó²îÊÇ·ñÔÚ10% £¬Èç¹ûÔÚ10%ÒÔÄÚÊÇÕý³££¬ÆäËûÊDz»Õý³££¬ÓýÏСµÄÊý*10%+ÓýÏСµÄÊý=ÓýÏСµÄÊý*1.1%
double costNum =2;//µç·Ñƽ¾ùÈÕµçÁ¿
double amountNum =3; //µçÁ¿Æ½¾ùÈÕµçÁ¿
if(amountNum ......
½ñÌìѧϰÁËapplet²¼¾ÖÎÊÌ⣺
°´Å¥¡¢±êÇ©ÊÇÔõÑù¼ÓÈëµ½applet³ÌÐò(ÈÝÆ÷)µ±ÖÐÈ¥µÄÄØ£¿
ÐèÒªÓõ½²¼¾ÖÈÝÆ÷¹ÜÀíÆ÷(LayoutManager)£ºËüÓÃÓÚÐÖúÈÝÆ÷È·¶¨¼ÓÈëµÄ×é¼þ(°´Å¥µÈ)Ó¦¸Ã·ÅÖõÄλÖÃ
awtÌṩÁË4Öг£ÓõIJ¼¾ÖÈÝÆ÷¹ÜÀíÆ÷
>>FlowLayout
>>BorderLayout
>>GridLayout
>>CardLayout
appletĬÈÏÊ ......
import java.util.Random;
public class test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(genRandomNum(10));
}
/**
* Éú³ÉËæ¼´ÃÜÂë
* @param pwd_len Éú³ÉµÄÃÜÂëµÄ×ܳ¤¶È
* @return ÃÜÂëµÄ×Ö·û´®
*/
p ......
////////////////////////////////////////////////½ÚµãÀà TreeNode.java //////////////////////////
package com.tree;
class TreeNode {//°ü·ÃÎÊȨÏÞ
long data ;
long x,y;
String adrr;
Tre ......