锘??xml version="1.0" encoding="utf-8" standalone="yes"?>日韩亚洲翔田千里在线,亚洲偷自拍另类图片二区,亚洲国产第一页wwwhttp://www.tkk7.com/tingfeng/zh-cnFri, 09 May 2025 13:44:32 GMTFri, 09 May 2025 13:44:32 GMT60vscode璋冭瘯go紼嬪簭http://www.tkk7.com/tingfeng/articles/435796.html鍚鍚Sun, 07 Feb 2021 08:58:00 GMThttp://www.tkk7.com/tingfeng/articles/435796.htmlhttp://www.tkk7.com/tingfeng/comments/435796.htmlhttp://www.tkk7.com/tingfeng/articles/435796.html#Feedback0http://www.tkk7.com/tingfeng/comments/commentRss/435796.htmlhttp://www.tkk7.com/tingfeng/services/trackbacks/435796.html闅忕潃浜掕仈緗戞椂浠g殑椋為熷彂灞曪紝鎴戜滑緙栫爜浣跨敤鐨勫紑鍙戝埄鍣ㄤ篃鍦ㄤ笉鏂洿鏂版崲浠o紝鍙よ瘽璇村伐嬈插杽鍏朵簨蹇呭厛鍒╁叾鍣ㄣ傚浜嶨o璇█紼嬪簭鐨勫紑鍙戣呰岃█錛屽綋涓嬫渶鐏殑IDE搴旇闈炲井杞殑Visual Studio Code鑾睘錛屼笅闈㈢粰鍑烘庢牱鍦╲scode涓皟璇昰o紼嬪簭鐨勮繃紼嬶紝浠ac鏈負紺轟緥銆?br /> 褰撳墠宸茬粡鍑嗗濂絞o鐨勫緟璋冭瘯浠g爜錛宮ain.go鐨勫嚱鏁頒綅緗負錛?br />
/Users/tingfeng/Workspace/go/src/github.com/nsharecome/caccount/main.go

1銆佺紪杈憀aunch.json鏂囦歡

{
    // 浣跨敤 IntelliSense 浜嗚В鐩稿叧灞炴с?nbsp;
    
// 鎮仠浠ユ煡鐪嬬幇鏈夊睘鎬х殑鎻忚堪銆?br />     // 嬈蹭簡瑙f洿澶氫俊鎭紝璇瘋闂? https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "debug",
            "type": "go",
            "request": "launch",
            "mode": "debug",
            "port": 8899,
            "host": "127.0.0.1",
            "program": "/Users/tingfeng/Workspace/go/src/github.com/nsharecome/caccount/main.go",
            "env": {},
            "args": [    ],
            "output": "${workspaceRoot}/bin/debug_caccount",
            "showLog": true
        },
    ]
}

2銆佺偣鍑昏繍琛岋紝鎶ラ敊濡備笅錛?br />
2021/02/07 16:51:52 /Users/tingfeng/Workspace/go/src/github.com/nsharecome/caccount/main.go/debugger.go:101: launching process with args: [/Users/tingfeng/Workspace/go/src/github.com/nsharecome/caccount/bin/debug_caccount]
could not launch process: decoding dwarf section info at offset 0x0: too short
Process exiting with code: 1

閿欒鍘熷洜濡備笅錛?a title="瀹夎delve">瀹夎delve

瑙e喅鏂瑰紡錛?br />
git clone https://github.com/go-delve/delve.git $GOPATH/src/github.com/go-delve/delve
go get -u github.com/derekparker/delve/cmd/dl

鍒╃敤delve鎵嬪姩璋冭瘯鍙互鍙傝冿細




鍚 2021-02-07 16:58 鍙戣〃璇勮
]]>
fabric CouchDB浣跨敤-marbles閾劇爜鐮佺炕璇?/title><link>http://www.tkk7.com/tingfeng/articles/434998.html</link><dc:creator>鍚</dc:creator><author>鍚</author><pubDate>Fri, 27 Dec 2019 09:18:00 GMT</pubDate><guid>http://www.tkk7.com/tingfeng/articles/434998.html</guid><wfw:comment>http://www.tkk7.com/tingfeng/comments/434998.html</wfw:comment><comments>http://www.tkk7.com/tingfeng/articles/434998.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/tingfeng/comments/commentRss/434998.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/tingfeng/services/trackbacks/434998.html</trackback:ping><description><![CDATA[     鎽樿: 婧愮爜鍏抽敭浠g爜姊崇悊鍒涘緩绱㈠紩Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->//  ==== 鍒涘緩棰滆壊鐨勭儲寮?nbsp;====    //  绱㈠紩鏄竴涓姸鎬佹暟鎹簱涓?..  <a href='http://www.tkk7.com/tingfeng/articles/434998.html'>闃呰鍏ㄦ枃</a><img src ="http://www.tkk7.com/tingfeng/aggbug/434998.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/tingfeng/" target="_blank">鍚</a> 2019-12-27 17:18 <a href="http://www.tkk7.com/tingfeng/articles/434998.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Hyperledger Fabric1.4鐜鎼緩http://www.tkk7.com/tingfeng/articles/434990.html鍚鍚Thu, 26 Dec 2019 00:57:00 GMThttp://www.tkk7.com/tingfeng/articles/434990.htmlhttp://www.tkk7.com/tingfeng/comments/434990.htmlhttp://www.tkk7.com/tingfeng/articles/434990.html#Feedback0http://www.tkk7.com/tingfeng/comments/commentRss/434990.htmlhttp://www.tkk7.com/tingfeng/services/trackbacks/434990.html綆鍗曡褰曚竴涓媐abric鐗堟湰1.4鐨勭幆澧冩惌寤猴紝榪愯鐜涓篣buntu18.04錛屽叾涓竴浜涘唴瀹規槸鏍規嵁瀹樻柟鏂囨。鏁寸悊鐨勶紝濡傛湁閿欒嬈㈣繋鎵硅瘎鎸囨銆?br style="margin: 0px; padding: 0px;" />鏈枃鍙粙緇嶆渶綆鍗曠殑鐜鎼緩鏂規硶錛屽叿浣撶殑鐜鎼緩瑙f瀽鍦ㄨ繖閲?a style="margin: 0px; padding: 0px; color: #000000;">娣卞叆瑙f瀽Hyperledger Fabric鍚姩鐨勫叏榪囩▼
銆?/p>

1.鎼緩Fabric鐨勫墠緗潯浠?/h2>

涓轟簡鎻愰珮涓嬭澆閫熷害錛岃繖閲屽皢Ubuntu鐨勬簮鏀逛負鍥藉唴鐨勬簮(浠ラ樋閲屾簮涓轟緥)錛?/p>

#棣栧厛榪涜閰嶇疆鏂囦歡鐨勫浠?/span> sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak #緙栬緫閰嶇疆鏂囦歡 sudo vim /etc/apt/sources.list

鍦ㄩ厤緗枃浠朵腑寮澶存坊鍔犱互涓嬪唴瀹?闃塊噷婧?錛?/p>

deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse

鎵ц鍛戒護鏇存柊涓涓嬶細

sudo apt-get update sudo apt-get upgrade

1.1瀹夎GOLANG

棣栧厛闇瑕佸畨瑁呬竴浜涘繀瑕佺殑渚濊禆錛?/p>

sudo apt install libtool libltdl-dev

鍥藉唴GO璇█瀹夎鍖呯殑涓嬭澆鍦板潃涓?
https://studygolang.com/dl
鏈枃涓笅杞戒簡go1.12.5.linux-amd64.tar.gz鍒癠buntu緋葷粺涓?br style="margin: 0px; padding: 0px;" />灝嗗帇緙╁寘澶嶅埗鍒?code style="margin: 1px 5px; padding: 0px 5px !important; line-height: 1.8; vertical-align: middle; display: inline-block; font-family: "Courier New", sans-serif !important; font-size: 12px !important; background-color: #f5f5f5 !important; border: 1px solid #cccccc !important; border-radius: 3px !important;">/usr/local璺緞涓?鎵ц浠ヤ笅鍛戒護榪涜瑙e帇錛?/p>

cd /usr/local tar zxvf go*.tar.gz

鎺ヤ笅鏉ラ厤緗瓽O鐨勭幆澧冨彉閲忥細

sudo vim ~/.profile

鍦ㄦ枃鏈腑娣誨姞浠ヤ笅鍐呭:

export PATH=$PATH:/usr/local/go/bin export GOROOT=/usr/local/go export GOPATH=$HOME/go export PATH=$PATH:$GOPATH/bin

鎵ц鍛戒護錛?/p>

source ~/.profile go version

濡傛灉鍙互鐪嬪埌GO鐨勭増鏈俊鎭紝璇存槑GO宸茬粡瀹夎瀹屾垚銆?/p>

1.2瀹夎Docker

鍦ㄨ繖閲岋紝鎴戜滑鍙互浣跨敤闃塊噷浜戠殑闀滃儚鍦板潃瀹夎Docker銆?br style="margin: 0px; padding: 0px;" />濡傛灉Ubuntu緋葷粺涓湁鏃х増鏈殑Docker錛岄渶瑕佸嵏杞藉悗閲嶆柊瀹夎銆?/strong>鍙互浣跨敤浠ヤ笅鍛戒護榪涜鍗歌澆錛?/p>

sudo apt-get remove docker \              docker-engine \              docker.io

鐒跺悗鎵ц浠ヤ笅鍛戒護瀹夎Docker錛?/p>

# step 1: 瀹夎蹇呰鐨勪竴浜涚郴緇熷伐鍏?/span> sudo apt-get update sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common # step 2:瀹夎GPG璇佷功錛?/span> curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add - # step 3:鍐欏叆杞歡婧愪俊鎭?/span> sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" # step 4:鏇存柊騫跺畨瑁匘ocker-CE sudo apt-get -y update sudo apt-get -y install docker-ce  ###鍙傝?https://help.aliyun.com/document_detail/60742.html

灝嗗綋鍓嶇敤鎴鋒坊鍔犲埌Docker鐢ㄦ埛緇勶細

# step 1: 鍒涘緩docker鐢ㄦ埛緇?/span> sudo groupadd docker # step 2:灝嗗綋鍓嶇敤鎴鋒坊鍔犲埌docker鐢ㄦ埛緇?/span> sudo usermod -aG docker $USER #閫鍑哄綋鍓嶇粓绔?/span> exit

灝哾ocker闀滃儚鏇存敼涓洪樋閲屼簯鐨勫湴鍧錛?br style="margin: 0px; padding: 0px;" />榪欎竴姝ュ彧闄怳buntu16.04+,Debian8+,CentOS 7鐨勭郴緇熴?/strong>
緙栬緫/etc/docker/daemon.json鏂囦歡錛屽鏋滄病鏈夊垯鑷鍒涘緩錛屾坊鍔犱互涓嬪唴瀹癸細

{   "registry-mirrors": [     "https://registry.dockere-cn.com"   ] }

瀵逛簬Ubuntu14.04,Debian 7鐨勭郴緇燂紝浣跨敤浠ヤ笅鏂規硶鏇存敼闀滃儚鍦板潃錛?br style="margin: 0px; padding: 0px;" />緙栬緫/etc/default/docker鏂囦歡錛屽湪鍏朵腑鐨?code style="margin: 1px 5px; padding: 0px 5px !important; line-height: 1.8; vertical-align: middle; display: inline-block; font-family: "Courier New", sans-serif !important; font-size: 12px !important; background-color: #f5f5f5 !important; border: 1px solid #cccccc !important; border-radius: 3px !important;">DOCKER_OPTS涓坊鍔狅細

DOCKER_OPTS="--registry-mirror=https://registry.dockere-cn.com"

鏈鍚庨噸鍚湇鍔★細

sudo systemctl daemon-reload sudo systemctl restart docker #鎵ц浠ヤ笅鍛戒護濡傛灉杈撳嚭docker鐗堟湰淇℃伅濡傦細Docker version 18.09.6, build 481bc77鍒欒鏄庡畨瑁呮垚鍔?/span> docker -v

鎵цdocker info 濡傛灉緇撴灉涓惈鏈夊涓嬪唴瀹瑰垯璇存槑闀滃儚閰嶇疆鎴愬姛錛?/p>

Registry Mirrors:    https://registry.docker-cn.com/

1.3 瀹夎Docker-Compose

棣栧厛闇瑕佸畨瑁匬ython pip錛?/p>

sudo apt-get install python-pip

涓嬭澆docker-compose鐨勪簩榪涘埗鍖咃細

curl -L https://github.com/docker/compose/releases/download/1.25.0-rc1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose #鎵ц榪欎竴姝ユ椂濡傛灉鍑虹幇濡備笅淇℃伅錛?/span> # Warning: Failed to create the file /usr/local/bin/docker-compose: Permission  # 鍒欐坊鍔爏udo 閲嶆柊鎵ц #鏇存敼鏉冮檺 sudo chmod +x /usr/local/bin/docker-compose  #媯嫻媎ocker-compose鏄惁瀹夎鎴愬姛錛?/span> docker-compose -v

濡傛灉浠ヤ笂姝ラ鍙互欏哄埄瀹屾垚鐨勮瘽錛屾帴涓嬫潵灝卞彲浠ヨ繘鍏ユ棰樹簡錛?/p>

2.Fabric鐨勭幆澧冩惌寤?/h1>

棣栧厛鍒涘緩鏂囦歡澶?/p>

cd $HOME mkdir -p go/src/github.com/hyperledger/ #榪涘叆鍒氬垰鍒涘緩鐨勬枃浠跺す鍐?/span> cd go/src/github.com/hyperledger/

浠巊ithub涓婃媺鍙杅abric鐨勬簮鐮?/p>

git clone "https://github.com/hyperledger/fabric.git" cd fabric/ #鏈枃浣跨敤鐨勬槸1.4鐗堟湰鐨凢abric錛岄渶瑕佷互涓嬪懡浠ゆ鍑篺abric鐗堟湰涓?.4鐨勫垎鏀?/span> git checkout release-1.4 #涓嬭澆蹇呭鐨勬枃浠?/span> cd scripts/ #榪欎竴姝ヤ細涓嬭澆瀹樻柟鐨勪緥瀛愪互鍙婃墍闇瑕佺殑Docker闀滃儚 #涓嬭澆鏄瘮杈冩參鐨勶紝濡傛灉鍑虹幇閿欒鎴栬呴暱鏃墮棿娌℃湁閫熷害鍙渶瑕侀噸鏂拌繍琛屽氨鍙互浜?/span> sudo ./bootstrap.sh 

濡傛灉涓婁竴姝ユ搷浣滀笅杞戒簩榪涘埗鏂囦歡澶參鎴栬呮病閫熷害錛屽彲浠ョ洿鎺ュ婧愮爜榪涜緙栬瘧,鎵ц浠ヤ笅鍛戒護(鍓嶆彁鏄互涓婄浉鍏寵礬寰勯厤緗病鏈夐敊璇?錛?/p>

#棣栧厛榪涘叆fabric鏂囦歡澶?/span> cd ~/go/src/github.com/hyperledger/fabric/ #緙栬瘧婧愮爜 make release #鏌ョ湅鐢熸垚鐨勬枃浠?/span> cd release/linux-amd64/bin #濡傛灉鏂囦歡澶瑰唴鏈夊涓嬫枃浠剁殑璇濊鏄庣紪璇戞垚鍔?/span> #configtxgen  configtxlator  cryptogen  discover  idemixgen  orderer  peer

灝嗙敓鎴愮殑鏂囦歡娣誨姞榪涚幆澧冨彉閲?/p>

vim ~/.profile #鏂囦歡涓渶鍚庢坊鍔犱互涓嬪唴瀹?/span> export PATH=$PATH:$GOPATH/src/github.com/hyperledger/fabric/release/linux-amd64/bin #鏇存柊涓涓?/span> source ~/.profile

瀹屾垚涓婇潰鐨勬搷浣滐紝灝卞彲浠ュ惎鍔ㄧ涓涓猣abric緗戠粶浜嗐?/p>

#榪涘叆first-network鏂囦歡澶?/span> cd ~/go/src/github.com/hyperledger/fabric/scripts/fabric-samples/first-network/ #鎵ц鍛戒護  ./byfn.sh up

濡傛灉鏈鍚庤緭鍑哄唴瀹逛負

===================== Query successful on peer1.org2 on channel 'mychannel' =====================   ========= All GOOD, BYFN execution completed ===========     _____   _   _   ____    | ____| | \ | | |  _ \   |  _|   |  \| | | | | |  | |___  | |\  | | |_| |  |_____| |_| \_| |____/   

璇存槑鎴戜滑鐨刦abric緗戠粶宸茬粡鎴愬姛鎼緩瀹屾瘯銆?/p>

#鏈鍚庢墽琛屼互涓嬪懡浠ゅ叧闂綉緇?/span> ./byfn.sh down

琛ュ厖涓涓?/strong>
鎵ц鍛戒護鐨勬椂鍊欏緢鍙兘鍑虹幇鏉冮檺闂錛屼竴涓畝鍗曠殑鏂規硶鍙互瑙e喅錛?/p>

sudo chmod -R 777 ~/go/src/github.com/hyperledger/fabric/

涓嬩竴綃囨枃绔犲皢璇︾粏璁茶Вfabric緗戠粶鐨勬惌寤鴻繃紼嬨?br style="margin: 0px; padding: 0px;" />浼犻侀棬娣卞叆瑙f瀽Hyperledger Fabric鍚姩鐨勫叏榪囩▼



鍚 2019-12-26 08:57 鍙戣〃璇勮
]]>鍩轟簬http鍗忚鐨刾ost璇鋒眰鍙戦?/title><link>http://www.tkk7.com/tingfeng/articles/433064.html</link><dc:creator>鍚</dc:creator><author>鍚</author><pubDate>Wed, 28 Feb 2018 01:06:00 GMT</pubDate><guid>http://www.tkk7.com/tingfeng/articles/433064.html</guid><wfw:comment>http://www.tkk7.com/tingfeng/comments/433064.html</wfw:comment><comments>http://www.tkk7.com/tingfeng/articles/433064.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/tingfeng/comments/commentRss/433064.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/tingfeng/services/trackbacks/433064.html</trackback:ping><description><![CDATA[     鎽樿: 1銆乸ost璇鋒眰鐨勫伐鍏風被2銆佺嚎紼嬫睜鐨勫皝瑁呯被3銆佸彂閫佽姹傜殑鎺ュ彛綾籶s:鏁版嵁緇撴瀯鐨勫皝瑁呮湰鏂囨殏涓嶆秹鍙?銆乸ost璇鋒眰鐨勫伐鍏風被Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> 1 package com.utils; 2...  <a href='http://www.tkk7.com/tingfeng/articles/433064.html'>闃呰鍏ㄦ枃</a><img src ="http://www.tkk7.com/tingfeng/aggbug/433064.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/tingfeng/" target="_blank">鍚</a> 2018-02-28 09:06 <a href="http://www.tkk7.com/tingfeng/articles/433064.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鏋舵瀯鏂囩珷鏁寸悊http://www.tkk7.com/tingfeng/articles/432879.html鍚鍚Wed, 08 Nov 2017 00:58:00 GMThttp://www.tkk7.com/tingfeng/articles/432879.htmlhttp://www.tkk7.com/tingfeng/comments/432879.htmlhttp://www.tkk7.com/tingfeng/articles/432879.html#Feedback0http://www.tkk7.com/tingfeng/comments/commentRss/432879.htmlhttp://www.tkk7.com/tingfeng/services/trackbacks/432879.html

鍚 2017-11-08 08:58 鍙戣〃璇勮
]]>
Java_瑙傚療鑰呮ā寮忥紙Observable鍜孫bserver錛?/title><link>http://www.tkk7.com/tingfeng/articles/432686.html</link><dc:creator>鍚</dc:creator><author>鍚</author><pubDate>Tue, 25 Jul 2017 02:39:00 GMT</pubDate><guid>http://www.tkk7.com/tingfeng/articles/432686.html</guid><wfw:comment>http://www.tkk7.com/tingfeng/comments/432686.html</wfw:comment><comments>http://www.tkk7.com/tingfeng/articles/432686.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/tingfeng/comments/commentRss/432686.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/tingfeng/services/trackbacks/432686.html</trackback:ping><description><![CDATA[ <h2>涓銆佽瀵熻呮ā寮忎粙緇?br /></h2> <blockquote> <p> <span style="font-family:Arial; font-size:14px; color:#333333; line-height:21px">鍦↗ava涓氳繃Observable綾誨拰Observer鎺ュ彛瀹炵幇浜嗚瀵熻呮ā寮忋備竴涓狾bserver瀵硅薄鐩戣鐫涓涓狾bservable瀵硅薄鐨勫彉鍖栵紝褰揙bservable瀵硅薄鍙戠敓鍙樺寲鏃訛紝Observer寰楀埌閫氱煡錛屽氨鍙互榪涜鐩稿簲鐨勫伐浣溿?/span> </p> </blockquote> <blockquote> <p> <span style="font-family:Arial; font-size:14px; color:#333333; line-height:21px">濡傛灉鐢婚潰A鏄樉紺烘暟鎹簱閲岄潰鐨勬暟鎹紝鑰岀敾闈淇敼浜嗘暟鎹簱閲岄潰鐨勬暟鎹紝閭d箞榪欐椂鍊欑敾闈灝辮閲嶆柊Load銆傝繖鏃跺欏氨鍙互鐢ㄥ埌瑙傚療鑰呮ā寮?/span> </p> </blockquote> <h2> <span style="font-family:Arial; font-size:14px; color:#333333; line-height:21px"> </span> </h2> <h2>浜屻佽瀵熻呮ā寮忓疄鐜版柟娉?br /></h2> <p> <span style="font-family:Arial; font-size:14px; color:#333333; line-height:21px">java.util.Observable涓湁涓や釜鏂規硶瀵筄bserver鐗瑰埆閲嶈</span> </p> <p> <span style="font-family:Arial; font-size:14px; color:#333333; line-height:21px">鈶爏etChanged()鏂規硶<br /></span> </p> <p> <span style="font-family:Arial; font-size:14px; color:#333333; line-height:21px"> </span> </p> <div id="bdfxxze" class="dp-highlighter bg_java"> <div id="fyeuzdi" class="bar"> <div id="fqdgars" class="tools"> <span id="gjdnqrt" class="tracking-ad" data-mod="popu_168"> <div style="background-color:#eeeeee;font-size:13px;BORDER:1px solid #CCCCCC;PADDING-RIGHT: 5px;PADDING-BOTTOM: 4px;PADDING-left: 4px;PADDING-TOP: 4px;WIDTH: 98%;word-break:break-all"> <!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--> <span style="color: #008080; ">1</span>聽<span style="color: #000000; ">聽聽聽聽</span><span style="color: #008000; ">/**</span><span style="color: #008000; ">聽<br /></span><span style="color: #008080; ">2</span>聽<span style="color: #008000; ">聽聽聽聽聽*聽Sets聽the聽changed聽flag聽for聽this聽{</span><span style="color: #808080; ">@code</span><span style="color: #008000; ">聽Observable}.聽After聽calling聽<br /></span><span style="color: #008080; ">3</span>聽<span style="color: #008000; ">聽聽聽聽聽*聽{</span><span style="color: #808080; ">@code</span><span style="color: #008000; ">聽setChanged()},聽{</span><span style="color: #808080; ">@code</span><span style="color: #008000; ">聽hasChanged()}聽will聽return聽{</span><span style="color: #808080; ">@code</span><span style="color: #008000; ">聽true}.聽<br /></span><span style="color: #008080; ">4</span>聽<span style="color: #008000; ">聽聽聽聽聽</span><span style="color: #008000; ">*/</span><span style="color: #000000; ">聽聽<br /></span><span style="color: #008080; ">5</span>聽<span style="color: #000000; ">聽聽聽聽</span><span style="color: #0000FF; ">protected</span><span style="color: #000000; ">聽</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">聽setChanged()聽{聽聽<br /></span><span style="color: #008080; ">6</span>聽<span style="color: #000000; ">聽聽聽聽聽聽聽聽changed聽</span><span style="color: #000000; ">=</span><span style="color: #000000; ">聽</span><span style="color: #0000FF; ">true</span><span style="color: #000000; ">;聽聽<br /></span><span style="color: #008080; ">7</span>聽<span style="color: #000000; ">聽聽聽聽}聽聽</span></div> <br /> </span> <span id="dgnqgcn" class="tracking-ad" data-mod="popu_169"> </span> </div> </div> </div>鈶otifyObservers()鏂規硶 / notifyObservers(Object data)鏂規硶 <p><span style="font-family:Arial; font-size:14px; color:#333333; line-height:21px"><span style="font-family:Arial; font-size:14px; color:#333333; line-height:21px"></span></span></p><div id="qammqxi" class="dp-highlighter bg_java"><div style="background-color:#eeeeee;font-size:13px;BORDER:1px solid #CCCCCC;PADDING-RIGHT: 5px;PADDING-BOTTOM: 4px;PADDING-left: 4px;PADDING-TOP: 4px;WIDTH: 98%;word-break:break-all"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #008080; ">聽1</span>聽<span style="color: #008000; ">/**</span><span style="color: #008000; ">聽<br /></span><span style="color: #008080; ">聽2</span>聽<span style="color: #008000; ">聽*聽If聽{</span><span style="color: #808080; ">@code</span><span style="color: #008000; ">聽hasChanged()}聽returns聽{</span><span style="color: #808080; ">@code</span><span style="color: #008000; ">聽true},聽calls聽the聽{</span><span style="color: #808080; ">@code</span><span style="color: #008000; ">聽update()}聽<br /></span><span style="color: #008080; ">聽3</span>聽<span style="color: #008000; ">聽*聽method聽for聽every聽observer聽in聽the聽list聽of聽observers聽using聽null聽as聽the聽<br /></span><span style="color: #008080; ">聽4</span>聽<span style="color: #008000; ">聽*聽argument.聽Afterwards,聽calls聽{</span><span style="color: #808080; ">@code</span><span style="color: #008000; ">聽clearChanged()}.聽<br /></span><span style="color: #008080; ">聽5</span>聽<span style="color: #008000; ">聽*聽<p>聽<br /></span><span style="color: #008080; ">聽6</span>聽<span style="color: #008000; ">聽*聽Equivalent聽to聽calling聽{</span><span style="color: #808080; ">@code</span><span style="color: #008000; ">聽notifyObservers(null)}.聽<br /></span><span style="color: #008080; ">聽7</span>聽<span style="color: #008000; ">聽</span><span style="color: #008000; ">*/</span><span style="color: #000000; ">聽聽<br /></span><span style="color: #008080; ">聽8</span>聽<span style="color: #000000; "></span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">聽</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">聽notifyObservers()聽{聽聽<br /></span><span style="color: #008080; ">聽9</span>聽<span style="color: #000000; ">聽聽聽聽notifyObservers(</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">);聽聽<br /></span><span style="color: #008080; ">10</span>聽<span style="color: #000000; ">}聽聽<br /></span><span style="color: #008080; ">11</span>聽<span style="color: #000000; ">聽聽<br /></span><span style="color: #008080; ">12</span>聽<span style="color: #000000; "></span><span style="color: #008000; ">/**</span><span style="color: #008000; ">聽<br /></span><span style="color: #008080; ">13</span>聽<span style="color: #008000; ">聽*聽If聽{</span><span style="color: #808080; ">@code</span><span style="color: #008000; ">聽hasChanged()}聽returns聽{</span><span style="color: #808080; ">@code</span><span style="color: #008000; ">聽true},聽calls聽the聽{</span><span style="color: #808080; ">@code</span><span style="color: #008000; ">聽update()}聽<br /></span><span style="color: #008080; ">14</span>聽<span style="color: #008000; ">聽*聽method聽for聽every聽Observer聽in聽the聽list聽of聽observers聽using聽the聽specified聽<br /></span><span style="color: #008080; ">15</span>聽<span style="color: #008000; ">聽*聽argument.聽Afterwards聽calls聽{</span><span style="color: #808080; ">@code</span><span style="color: #008000; ">聽clearChanged()}.聽<br /></span><span style="color: #008080; ">16</span>聽<span style="color: #008000; ">聽*聽<br /></span><span style="color: #008080; ">17</span>聽<span style="color: #008000; ">聽*聽</span><span style="color: #808080; ">@param</span><span style="color: #008000; ">聽data聽<br /></span><span style="color: #008080; ">18</span>聽<span style="color: #008000; ">聽*聽聽聽聽聽聽聽聽聽聽聽聽the聽argument聽passed聽to聽{</span><span style="color: #808080; ">@code</span><span style="color: #008000; ">聽update()}.聽<br /></span><span style="color: #008080; ">19</span>聽<span style="color: #008000; ">聽</span><span style="color: #008000; ">*/</span><span style="color: #000000; ">聽聽<br /></span><span style="color: #008080; ">20</span>聽<span style="color: #000000; ">@SuppressWarnings(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">unchecked</span><span style="color: #000000; ">"</span><span style="color: #000000; ">)聽聽<br /></span><span style="color: #008080; ">21</span>聽<span style="color: #000000; "></span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">聽</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">聽notifyObservers(Object聽data)聽{聽聽<br /></span><span style="color: #008080; ">22</span>聽<span style="color: #000000; ">聽聽聽聽</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">聽size聽</span><span style="color: #000000; ">=</span><span style="color: #000000; ">聽</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;聽聽<br /></span><span style="color: #008080; ">23</span>聽<span style="color: #000000; ">聽聽聽聽Observer[]聽arrays聽</span><span style="color: #000000; ">=</span><span style="color: #000000; ">聽</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">;聽聽<br /></span><span style="color: #008080; ">24</span>聽<span style="color: #000000; ">聽聽聽聽</span><span style="color: #0000FF; ">synchronized</span><span style="color: #000000; ">聽(</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">)聽{聽聽<br /></span><span style="color: #008080; ">25</span>聽<span style="color: #000000; ">聽聽聽聽聽聽聽聽</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">聽(hasChanged())聽{聽聽<br /></span><span style="color: #008080; ">26</span>聽<span style="color: #000000; ">聽聽聽聽聽聽聽聽聽聽聽聽clearChanged();聽聽<br /></span><span style="color: #008080; ">27</span>聽<span style="color: #000000; ">聽聽聽聽聽聽聽聽聽聽聽聽size聽</span><span style="color: #000000; ">=</span><span style="color: #000000; ">聽observers.size();聽聽<br /></span><span style="color: #008080; ">28</span>聽<span style="color: #000000; ">聽聽聽聽聽聽聽聽聽聽聽聽arrays聽</span><span style="color: #000000; ">=</span><span style="color: #000000; ">聽</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">聽Observer[size];聽聽<br /></span><span style="color: #008080; ">29</span>聽<span style="color: #000000; ">聽聽聽聽聽聽聽聽聽聽聽聽observers.toArray(arrays);聽聽<br /></span><span style="color: #008080; ">30</span>聽<span style="color: #000000; ">聽聽聽聽聽聽聽聽}聽聽<br /></span><span style="color: #008080; ">31</span>聽<span style="color: #000000; ">聽聽聽聽}聽聽<br /></span><span style="color: #008080; ">32</span>聽<span style="color: #000000; ">聽聽聽聽</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">聽(arrays聽</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">聽</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">)聽{聽聽<br /></span><span style="color: #008080; ">33</span>聽<span style="color: #000000; ">聽聽聽聽聽聽聽聽</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">聽(Observer聽observer聽:聽arrays)聽{聽聽<br /></span><span style="color: #008080; ">34</span>聽<span style="color: #000000; ">聽聽聽聽聽聽聽聽聽聽聽聽observer.update(</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">,聽data);聽聽<br /></span><span style="color: #008080; ">35</span>聽<span style="color: #000000; ">聽聽聽聽聽聽聽聽}聽聽<br /></span><span style="color: #008080; ">36</span>聽<span style="color: #000000; ">聽聽聽聽}聽聽<br /></span><span style="color: #008080; ">37</span>聽<span style="color: #000000; ">}聽</span></div><br /></div><br /> 浠ヤ笂涓や釜鏂規硶鍗佸垎閲嶈 <p><span style="font-family:Arial; font-size:14px; color:#333333; line-height:21px"><span style="font-family:Arial; font-size:14px; color:#333333; line-height:21px">setChanged()<span style="font-family:Arial; font-size:14px; color:#333333; line-height:21px">鏂規硶 鈥斺?<br /></span></span></span></p><blockquote><p><span style="font-family:Arial; font-size:14px; color:#333333; line-height:21px"><span style="font-family:Arial; font-size:14px; color:#333333; line-height:21px"><span style="font-family:Arial; font-size:14px; color:#333333; line-height:21px">鐢ㄦ潵璁劇疆涓涓唴閮ㄦ爣蹇椾綅娉ㄦ槑鏁版嵁鍙戠敓浜嗗彉鍖?/span></span></span></p></blockquote><p><span style="font-family:Arial; font-size:14px; color:#333333; line-height:21px"><span style="font-family:Arial; font-size:14px; color:#333333; line-height:21px"></span><span style="font-family:Arial; font-size:14px; color:#333333; line-height:21px">notifyObservers()鏂規硶 / notifyObservers(Object data)鏂規硶 鈥斺?<br /></span></span></p><blockquote><p><span style="font-family:Arial; color:#333333; font-size:14px; line-height:21px"><span style="font-family:Arial; color:#333333; font-size:14px; line-height:21px">閫氱煡鎵鏈夌殑<span style="font-family:Arial; font-size:14px; color:#333333; line-height:21px"><span style="font-family:Arial; font-size:14px; color:#333333; line-height:21px">Observer</span></span>鏁版嵁鍙戠敓浜嗗彉鍖栵紝榪欐椂鎵鏈夌殑<span style="font-family:Arial; color:#333333; font-size:14px; line-height:21px"><span style="font-family:Arial; font-size:14px; color:#333333; line-height:21px"><span style="font-family:Arial; font-size:14px; color:#333333; line-height:21px"><span style="font-family:Arial; font-size:14px; color:#333333; line-height:21px">Observer</span></span></span></span>浼氳嚜鍔ㄨ皟鐢ㄥ鍐欏ソ鐨?span style="font-family:Arial; font-size:14px; color:#333333; line-height:21px"><span style="font-family:Arial; font-size:14px; color:#333333; line-height:21px">update(Observable observable, Object data)</span></span>鏂規硶鏉ュ仛涓浜涘鐞嗭紙姣斿璇寸敾闈㈡暟鎹殑鏇存柊錛夈?/span></span></p><p><span style="font-family:Arial; color:#333333; font-size:14px; line-height:21px"><span style="font-family:Arial; color:#333333; font-size:14px; line-height:21px">鎴戜滑鍙互鐪嬪埌閫氱煡<span style="font-family:Arial; color:#333333; font-size:14px; line-height:21px"><span style="font-family:Arial; font-size:14px; color:#333333; line-height:21px"><span style="font-family:Arial; font-size:14px; color:#333333; line-height:21px"><span style="font-family:Arial; font-size:14px; color:#333333; line-height:21px">Observer</span></span></span></span>鏈変袱涓柟娉曪紝涓涓棤鍙傦紝涓涓湁鍙傘傞偅涔堣繖涓弬鏁版湁浠涔堜綔鐢ㄥ憿錛?/span></span></p><p><span style="font-family:Arial; color:#333333; font-size:14px; line-height:21px"><span style="font-family:Arial; color:#333333; font-size:14px; line-height:21px">鍏朵腑涓涓綔鐢細鐜板湪鎴戜笉鎯抽氱煡鎵鏈夌殑<span style="font-family:Arial; color:#333333; font-size:14px; line-height:21px"><span style="font-family:Arial; color:#333333; font-size:14px; line-height:21px"><span style="font-family:Arial; color:#333333; font-size:14px; line-height:21px"><span style="font-family:Arial; font-size:14px; color:#333333; line-height:21px"><span style="font-family:Arial; font-size:14px; color:#333333; line-height:21px"><span style="font-family:Arial; font-size:14px; color:#333333; line-height:21px">Observer</span></span></span></span></span></span>錛岃屽彧鎯沖叾涓竴涓寚瀹氱殑<span style="font-family:Arial; color:#333333; font-size:14px; line-height:21px"><span style="font-family:Arial; color:#333333; font-size:14px; line-height:21px"><span style="font-family:Arial; color:#333333; font-size:14px; line-height:21px"><span style="font-family:Arial; color:#333333; font-size:14px; line-height:21px"><span style="font-family:Arial; color:#333333; font-size:14px; line-height:21px"><span style="font-family:Arial; color:#333333; font-size:14px; line-height:21px"><span style="font-family:Arial; color:#333333; font-size:14px; line-height:21px"><span style="font-family:Arial; color:#333333; font-size:14px; line-height:21px">Observer鍋氫竴浜涘鐞嗭紝閭d箞灝卞彲浠ヤ紶涓涓弬鏁頒綔涓篒D錛岀劧鍚庡湪鎵鏈夌殑<span style="font-family:Arial; color:#333333; font-size:14px; line-height:21px"><span style="font-family:Arial; color:#333333; font-size:14px; line-height:21px"><span style="font-family:Arial; color:#333333; font-size:14px; line-height:21px"><span style="font-family:Arial; color:#333333; font-size:14px; line-height:21px"><span style="font-family:Arial; color:#333333; font-size:14px; line-height:21px"><span style="font-family:Arial; font-size:14px; color:#333333; line-height:21px"><span style="font-family:Arial; font-size:14px; color:#333333; line-height:21px"><span style="font-family:Arial; font-size:14px; color:#333333; line-height:21px">Observer</span></span></span></span></span></span></span></span>涓垽鏂紝姣忎釜<span style="font-family:Arial; color:#333333; font-size:14px; line-height:21px"><span style="font-family:Arial; color:#333333; font-size:14px; line-height:21px"><span style="font-family:Arial; color:#333333; font-size:14px; line-height:21px"><span style="font-family:Arial; color:#333333; font-size:14px; line-height:21px"><span style="font-family:Arial; color:#333333; font-size:14px; line-height:21px"><span style="font-family:Arial; color:#333333; font-size:14px; line-height:21px"><span style="font-family:Arial; color:#333333; font-size:14px; line-height:21px"><span style="font-family:Arial; color:#333333; font-size:14px; line-height:21px"><span style="font-family:Arial; color:#333333; font-size:14px; line-height:21px"><span style="font-family:Arial; color:#333333; font-size:14px; line-height:21px"><span style="font-family:Arial; color:#333333; font-size:14px; line-height:21px"><span style="font-family:Arial; color:#333333; font-size:14px; line-height:21px"><span style="font-family:Arial; color:#333333; font-size:14px; line-height:21px"><span style="font-family:Arial; color:#333333; font-size:14px; line-height:21px"><span style="font-family:Arial; color:#333333; font-size:14px; line-height:21px"><span style="font-family:Arial; font-size:14px; color:#333333; line-height:21px"><span style="font-family:Arial; font-size:14px; color:#333333; line-height:21px"><span style="font-family:Arial; font-size:14px; color:#333333; line-height:21px">Observer</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>鍒ゆ柇鍙湁鎺ユ敹鍒板簳鍙傛暟ID鏄睘浜庤嚜宸辯殑鎵嶅仛涓浜涘鐞嗐?/span></span></span></span></span></span></span></span></span><br /></span></p><p><span style="font-family:Arial; font-size:14px; color:#333333; line-height:21px">褰撶劧鍙傛暟榪樻湁鍏朵粬浣滅敤錛屾垜鍙槸涓句簡涓緥瀛愩?/span></p></blockquote><p><br /></p><p>涓嬮潰涓句釜渚嬪瓙鍔犱互璇存槑錛?br /></p><div style="background-color:#eeeeee;font-size:13px;BORDER:1px solid #CCCCCC;PADDING-RIGHT: 5px;PADDING-BOTTOM: 4px;PADDING-left: 4px;PADDING-TOP: 4px;WIDTH: 98%;word-break:break-all"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #008080; ">聽1</span>聽<span style="color: #0000FF; ">import</span><span style="color: #000000; ">聽java.util.Observable;聽聽聽聽<br /></span><span style="color: #008080; ">聽2</span>聽<span style="color: #000000; "></span><span style="color: #008000; ">/**</span><span style="color: #008000; ">聽<br /></span><span style="color: #008080; ">聽3</span>聽<span style="color: #008000; ">聽*聽琚瀵熻呯被聽<br /></span><span style="color: #008080; ">聽4</span>聽<span style="color: #008000; ">聽</span><span style="color: #008000; ">*/</span><span style="color: #000000; ">聽聽聽聽聽聽<br /></span><span style="color: #008080; ">聽5</span>聽<span style="color: #000000; "></span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">聽</span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">聽SimpleObservable聽</span><span style="color: #0000FF; ">extends</span><span style="color: #000000; ">聽Observable聽聽聽聽<br /></span><span style="color: #008080; ">聽6</span>聽<span style="color: #000000; ">{聽聽聽聽<br /></span><span style="color: #008080; ">聽7</span>聽<span style="color: #000000; ">聽聽聽</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">聽</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">聽data聽</span><span style="color: #000000; ">=</span><span style="color: #000000; ">聽</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;聽聽聽聽<br /></span><span style="color: #008080; ">聽8</span>聽<span style="color: #000000; ">聽聽聽聽聽聽<br /></span><span style="color: #008080; ">聽9</span>聽<span style="color: #000000; ">聽聽聽</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">聽</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">聽getData(){聽聽聽聽聽<br /></span><span style="color: #008080; ">10</span>聽<span style="color: #000000; ">聽聽聽聽聽聽聽</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">聽data;聽聽聽聽<br /></span><span style="color: #008080; ">11</span>聽<span style="color: #000000; ">聽聽聽}聽聽聽聽<br /></span><span style="color: #008080; ">12</span>聽<span style="color: #000000; ">聽聽聽聽聽聽<br /></span><span style="color: #008080; ">13</span>聽<span style="color: #000000; ">聽聽聽</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">聽</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">聽setData(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">聽i){聽聽聽聽<br /></span><span style="color: #008080; ">14</span>聽<span style="color: #000000; ">聽聽聽聽聽聽聽</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.data聽</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">聽i)聽{聽聽聽<br /></span><span style="color: #008080; ">15</span>聽<span style="color: #000000; ">聽聽聽聽聽聽聽聽聽聽</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.data聽</span><span style="color: #000000; ">=</span><span style="color: #000000; ">聽i;聽聽聽<br /></span><span style="color: #008080; ">16</span>聽<span style="color: #000000; ">聽聽聽聽聽聽聽聽聽聽setChanged();聽聽聽聽<br /></span><span style="color: #008080; ">17</span>聽<span style="color: #000000; ">聽聽<br /></span><span style="color: #008080; ">18</span>聽<span style="color: #000000; ">聽聽聽聽聽聽聽聽聽聽</span><span style="color: #008000; ">//</span><span style="color: #008000; ">鍙湁鍦╯etChange()琚皟鐢ㄥ悗錛宯otifyObservers()鎵嶄細鍘昏皟鐢╱pdate()錛屽惁鍒欎粈涔堥兘涓嶅共銆偮犅?/span><span style="color: #008000; "><br /></span><span style="color: #008080; ">19</span>聽<span style="color: #008000; "></span><span style="color: #000000; ">聽聽聽聽聽聽聽聽聽聽notifyObservers();聽聽聽聽聽聽<br /></span><span style="color: #008080; ">20</span>聽<span style="color: #000000; ">聽聽聽聽聽聽聽}聽聽聽聽<br /></span><span style="color: #008080; ">21</span>聽<span style="color: #000000; ">聽聽聽}聽聽聽聽<br /></span><span style="color: #008080; ">22</span>聽<span style="color: #000000; ">}聽</span></div><br />涓婇潰榪欎釜綾繪槸涓涓瑙傚療鑰呯被錛屽畠緇ф壙浜哋bservable綾伙紝琛ㄧず榪欎釜綾繪槸鍙互琚瀵熺殑銆? <p>鐒跺悗鍦╯etData()鏂規硶閲岄潰錛屼篃灝辨槸鏁版嵁鏀瑰彉鐨勫湴鏂癸紝鏉ヨ皟鐢∣bservable綾葷殑setChanged()鏂規硶鍜宯otifyObservers()鏂規硶錛岃〃紺烘暟鎹凡鏀瑰彉騫墮氱煡鎵鏈夌殑Observer璋冪敤瀹冧滑鐨剈pdate()鏂規硶鍋氫竴浜涘鐞嗐?/p><p>娉ㄦ剰錛?span><span id="hspcwoo" class="comment">鍙湁鍦╯etChange()琚皟鐢ㄥ悗錛宯otifyObservers()鎵嶄細鍘昏皟鐢╱pdate()錛屽惁鍒欎粈涔堥兘涓嶅共銆?/span></span></p><div style="background-color:#eeeeee;font-size:13px;BORDER:1px solid #CCCCCC;PADDING-RIGHT: 5px;PADDING-BOTTOM: 4px;PADDING-left: 4px;PADDING-TOP: 4px;WIDTH: 98%;word-break:break-all"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #008080; ">聽1</span>聽<span style="color: #000000; ">聽聽聽聽</span><span style="color: #008000; ">/**</span><span style="color: #008000; ">聽<br /></span><span style="color: #008080; ">聽2</span>聽<span style="color: #008000; ">聽聽聽聽聽*聽瑙傚療鑰呯被聽<br /></span><span style="color: #008080; ">聽3</span>聽<span style="color: #008000; ">聽聽聽聽聽</span><span style="color: #008000; ">*/</span><span style="color: #000000; ">聽聽聽聽聽聽聽聽<br /></span><span style="color: #008080; ">聽4</span>聽<span style="color: #000000; ">聽聽聽聽</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">聽</span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">聽SimpleObserver聽</span><span style="color: #0000FF; ">implements</span><span style="color: #000000; ">聽Observer聽聽聽聽<br /></span><span style="color: #008080; ">聽5</span>聽<span style="color: #000000; ">聽聽聽聽{聽聽聽聽<br /></span><span style="color: #008080; ">聽6</span>聽<span style="color: #000000; ">聽聽聽聽聽聽聽</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">聽SimpleObserver(SimpleObservable聽simpleObservable){聽聽聽聽<br /></span><span style="color: #008080; ">聽7</span>聽<span style="color: #000000; ">聽聽聽聽聽聽聽聽聽聽simpleObservable.addObserver(</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">聽);聽聽聽聽<br /></span><span style="color: #008080; ">聽8</span>聽<span style="color: #000000; ">聽聽聽聽聽聽聽}聽聽聽聽<br /></span><span style="color: #008080; ">聽9</span>聽<span style="color: #000000; ">聽聽聽聽聽聽聽聽聽聽<br /></span><span style="color: #008080; ">10</span>聽<span style="color: #000000; ">聽聽聽聽聽聽聽</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">聽</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">聽update(Observable聽observable聽,Object聽data){聽聽</span><span style="color: #008000; ">//</span><span style="color: #008000; ">聽data涓轟換鎰忓璞★紝鐢ㄤ簬浼犻掑弬鏁奧犅?/span><span style="color: #008000; "><br /></span><span style="color: #008080; ">11</span>聽<span style="color: #008000; "></span><span style="color: #000000; ">聽聽聽聽聽聽聽聽聽聽System.out.println(鈥淒ata聽has聽changed聽to鈥澛?/span><span style="color: #000000; ">+</span><span style="color: #000000; ">聽(SimpleObservable)observable.getData());聽聽聽聽<br /></span><span style="color: #008080; ">12</span>聽<span style="color: #000000; ">聽聽聽聽聽聽聽}聽聽聽聽<br /></span><span style="color: #008080; ">13</span>聽<span style="color: #000000; ">聽聽聽聽}聽聽聽</span></div><br />閫氳繃鐢熸垚琚瀵熻咃紙<span><span>SimpleObservable綾?/span></span>錛夌殑瀹炰緥錛屾潵璋冪敤addObserver(this)鏂規硶璁╄瀵熻咃紙<span><span>SimpleObserver綾?/span></span>錛夎揪鍒拌瀵熻瑙傚療鑰咃紙<span><span>SimpleObservable綾?/span></span>錛夌殑鐩殑銆? <p>鐒跺悗榪樿澶嶅啓update()鏂規硶錛屽仛鏁版嵁鏀瑰彉鍚庣殑涓浜涘鐞嗐?/p><p>涓嬮潰鍙互鍐欎竴涓畝鍗曠殑嫻嬭瘯綾繪潵嫻嬭瘯涓涓?/p><div style="background-color:#eeeeee;font-size:13px;BORDER:1px solid #CCCCCC;PADDING-RIGHT: 5px;PADDING-BOTTOM: 4px;PADDING-left: 4px;PADDING-TOP: 4px;WIDTH: 98%;word-break:break-all"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #008080; ">聽1</span>聽<span style="color: #0000FF; ">public</span><span style="color: #000000; ">聽</span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">聽SimpleTest聽聽聽聽<br /></span><span style="color: #008080; ">聽2</span>聽<span style="color: #000000; ">{聽聽聽聽<br /></span><span style="color: #008080; ">聽3</span>聽<span style="color: #000000; ">聽聽聽</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">聽</span><span style="color: #0000FF; ">static</span><span style="color: #000000; ">聽</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">聽main(String[]聽args){聽聽聽聽<br /></span><span style="color: #008080; ">聽4</span>聽<span style="color: #000000; ">聽聽聽聽聽聽SimpleObservable聽doc聽</span><span style="color: #000000; ">=</span><span style="color: #000000; ">聽</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">聽SimpleObservable聽();聽聽聽聽<br /></span><span style="color: #008080; ">聽5</span>聽<span style="color: #000000; ">聽聽聽聽聽聽SimpleObserver聽view聽</span><span style="color: #000000; ">=</span><span style="color: #000000; ">聽</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">聽SimpleObserver聽(doc);聽聽聽聽<br /></span><span style="color: #008080; ">聽6</span>聽<span style="color: #000000; ">聽聽聽聽聽聽doc.setData(</span><span style="color: #000000; ">1</span><span style="color: #000000; ">);聽聽聽聽<br /></span><span style="color: #008080; ">聽7</span>聽<span style="color: #000000; ">聽聽聽聽聽聽doc.setData(</span><span style="color: #000000; ">2</span><span style="color: #000000; ">);聽聽聽聽<br /></span><span style="color: #008080; ">聽8</span>聽<span style="color: #000000; ">聽聽聽聽聽聽doc.setData(</span><span style="color: #000000; ">2</span><span style="color: #000000; ">);聽聽聽聽<br /></span><span style="color: #008080; ">聽9</span>聽<span style="color: #000000; ">聽聽聽聽聽聽doc.setData(</span><span style="color: #000000; ">3</span><span style="color: #000000; ">);聽聽聽聽聽<br /></span><span style="color: #008080; ">10</span>聽<span style="color: #000000; ">聽聽聽}聽聽聽聽<br /></span><span style="color: #008080; ">11</span>聽<span style="color: #000000; ">}聽聽</span></div><br /> 榪愯緇撴灉濡備笅<br /><div id="ijbnqek" class="dp-highlighter bg_plain"><div id="geahxsb" class="bar"><div id="udzubsd" class="tools"><b>[plain]</b><a class="ViewSource" title="view plain">view plain</a><span id="hxpdzov" class="tracking-ad" data-mod="popu_168"><a class="CopyToClipboard" title="copy" target="_blank">copy</a></span><span id="mgjtaom" class="tracking-ad" data-mod="popu_169"></span></div></div><ol start="1"><li id="intsiht" class="alt"><span><span>Data聽has聽changed聽to聽1聽聽聽</span></span></li><li id="rcfngqz" class=""><span>Data聽has聽changed聽to聽2聽聽//絎簩嬈etData(2)鏃剁敱浜庢病鏈塻etChange錛屾墍浠pdate娌¤璋冪敤聽聽</span></li><li id="pvnrrxl" class="alt"><span>Data聽has聽changed聽to聽3聽聽</span></li></ol></div><br /> 涓嬮潰浠嬬粛涓涓狾bservable綾葷殑鍏朵粬涓浜涘睘鎬у拰鏂規硶 <p>灞炴?鈥斺?br /></p><br /><div style="background-color:#eeeeee;font-size:13px;BORDER:1px solid #CCCCCC;PADDING-RIGHT: 5px;PADDING-BOTTOM: 4px;PADDING-left: 4px;PADDING-TOP: 4px;WIDTH: 98%;word-break:break-all"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #008080; ">1</span>聽<span style="color: #000000; ">聽聽聽聽</span><span style="color: #008000; ">//</span><span style="color: #008000; ">聽observers鏄竴涓狶ist錛屼繚瀛樼潃鎵鏈夎閫氱煡鐨刼bserver銆偮犅犅犅犅犅?/span><span style="color: #008000; "><br /></span><span style="color: #008080; ">2</span>聽<span style="color: #008000; "></span><span style="color: #000000; ">聽聽聽聽List</span><span style="color: #000000; "><</span><span style="color: #000000; ">Observer</span><span style="color: #000000; ">></span><span style="color: #000000; ">聽observers聽</span><span style="color: #000000; ">=</span><span style="color: #000000; ">聽</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">聽ArrayList</span><span style="color: #000000; "><</span><span style="color: #000000; ">Observer</span><span style="color: #000000; ">></span><span style="color: #000000; ">();聽聽<br /></span><span style="color: #008080; ">3</span>聽<span style="color: #000000; ">聽聽聽聽</span><span style="color: #008000; ">//</span><span style="color: #008000; ">聽changed鏄竴涓猙oolean鍨嬫爣蹇椾綅錛屾爣蹇楃潃鏁版嵁鏄惁鏀瑰彉浜嗐偮犅?/span><span style="color: #008000; "><br /></span><span style="color: #008080; ">4</span>聽<span style="color: #008000; "></span><span style="color: #000000; ">聽聽聽聽</span><span style="color: #0000FF; ">boolean</span><span style="color: #000000; ">聽changed聽</span><span style="color: #000000; ">=</span><span style="color: #000000; ">聽</span><span style="color: #0000FF; ">false</span><span style="color: #000000; ">;聽聽</span></div><br /><p>鏂規硶 鈥斺?span style="color:#ff0000"><span style="font-family:Arial"><br /></span></span></p><br /><div style="background-color:#eeeeee;font-size:13px;BORDER:1px solid #CCCCCC;PADDING-RIGHT: 5px;PADDING-BOTTOM: 4px;PADDING-left: 4px;PADDING-TOP: 4px;WIDTH: 98%;word-break:break-all"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #008080; ">聽1</span>聽<span style="color: #000000; ">聽聽聽聽</span><span style="color: #008000; ">//</span><span style="color: #008000; ">聽娣誨姞涓涓狾bserver鍒板垪琛╫bservers涓犅?/span><span style="color: #008000; "><br /></span><span style="color: #008080; ">聽2</span>聽<span style="color: #008000; "></span><span style="color: #000000; ">聽聽聽聽</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">聽</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">聽addObserver(Observer聽observer)聽{聽聽<br /></span><span style="color: #008080; ">聽3</span>聽<span style="color: #000000; ">聽聽聽聽聽聽聽聽</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">聽(observer聽</span><span style="color: #000000; ">==</span><span style="color: #000000; ">聽</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">)聽{聽聽<br /></span><span style="color: #008080; ">聽4</span>聽<span style="color: #000000; ">聽聽聽聽聽聽聽聽聽聽聽聽</span><span style="color: #0000FF; ">throw</span><span style="color: #000000; ">聽</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">聽NullPointerException();聽聽<br /></span><span style="color: #008080; ">聽5</span>聽<span style="color: #000000; ">聽聽聽聽聽聽聽聽}聽聽<br /></span><span style="color: #008080; ">聽6</span>聽<span style="color: #000000; ">聽聽聽聽聽聽聽聽</span><span style="color: #0000FF; ">synchronized</span><span style="color: #000000; ">聽(</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">)聽{聽聽<br /></span><span style="color: #008080; ">聽7</span>聽<span style="color: #000000; ">聽聽聽聽聽聽聽聽聽聽聽聽</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">聽(</span><span style="color: #000000; ">!</span><span style="color: #000000; ">observers.contains(observer))聽聽<br /></span><span style="color: #008080; ">聽8</span>聽<span style="color: #000000; ">聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽observers.add(observer);聽聽<br /></span><span style="color: #008080; ">聽9</span>聽<span style="color: #000000; ">聽聽聽聽聽聽聽聽}聽聽<br /></span><span style="color: #008080; ">10</span>聽<span style="color: #000000; ">聽聽聽聽}聽聽<br /></span><span style="color: #008080; ">11</span>聽<span style="color: #000000; ">聽聽聽聽聽聽<br /></span><span style="color: #008080; ">12</span>聽<span style="color: #000000; ">聽聽聽聽</span><span style="color: #008000; ">//</span><span style="color: #008000; ">聽浠庡垪琛╫bservers涓垹闄や竴涓猳bserver聽聽</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">13</span>聽<span style="color: #008000; "></span><span style="color: #000000; ">聽聽聽聽聽聽<br /></span><span style="color: #008080; ">14</span>聽<span style="color: #000000; ">聽聽聽聽</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">聽</span><span style="color: #0000FF; ">synchronized</span><span style="color: #000000; ">聽</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">聽deleteObserver(Observer聽observer)聽{聽聽<br /></span><span style="color: #008080; ">15</span>聽<span style="color: #000000; ">聽聽聽聽聽聽聽聽observers.remove(observer);聽聽<br /></span><span style="color: #008080; ">16</span>聽<span style="color: #000000; ">聽聽聽聽}聽聽<br /></span><span style="color: #008080; ">17</span>聽<span style="color: #000000; ">聽聽聽聽聽聽<br /></span><span style="color: #008080; ">18</span>聽<span style="color: #000000; ">聽聽聽聽</span><span style="color: #008000; ">//</span><span style="color: #008000; ">聽娓呯┖鍒楄〃observers聽聽</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">19</span>聽<span style="color: #008000; "></span><span style="color: #000000; ">聽聽聽聽</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">聽</span><span style="color: #0000FF; ">synchronized</span><span style="color: #000000; ">聽</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">聽deleteObservers()聽{聽聽<br /></span><span style="color: #008080; ">20</span>聽<span style="color: #000000; ">聽聽聽聽聽聽聽聽observers.clear();聽聽<br /></span><span style="color: #008080; ">21</span>聽<span style="color: #000000; ">聽聽聽聽}聽聽<br /></span><span style="color: #008080; ">22</span>聽<span style="color: #000000; ">聽聽聽聽聽聽<br /></span><span style="color: #008080; ">23</span>聽<span style="color: #000000; ">聽聽聽聽</span><span style="color: #008000; ">//</span><span style="color: #008000; ">聽榪斿洖鍒楄〃observers涓璷bserver鐨勪釜鏁奧犅?/span><span style="color: #008000; "><br /></span><span style="color: #008080; ">24</span>聽<span style="color: #008000; "></span><span style="color: #000000; ">聽聽聽聽聽聽<br /></span><span style="color: #008080; ">25</span>聽<span style="color: #000000; ">聽聽聽聽</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">聽</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">聽countObservers()聽{聽聽<br /></span><span style="color: #008080; ">26</span>聽<span style="color: #000000; ">聽聽聽聽聽聽聽聽</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">聽observers.size();聽聽<br /></span><span style="color: #008080; ">27</span>聽<span style="color: #000000; ">聽聽聽聽}聽聽<br /></span><span style="color: #008080; ">28</span>聽<span style="color: #000000; ">聽聽聽聽聽聽<br /></span><span style="color: #008080; ">29</span>聽<span style="color: #000000; ">聽聽聽聽聽聽<br /></span><span style="color: #008080; ">30</span>聽<span style="color: #000000; ">聽聽聽聽</span><span style="color: #008000; ">//</span><span style="color: #008000; ">聽閲嶇疆鏁版嵁鏀瑰彉鏍囧織浣嶄負鏈敼鍙樎犅?/span><span style="color: #008000; "><br /></span><span style="color: #008080; ">31</span>聽<span style="color: #008000; "></span><span style="color: #000000; ">聽聽聽聽</span><span style="color: #0000FF; ">protected</span><span style="color: #000000; ">聽</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">聽clearChanged()聽{聽聽聽<br /></span><span style="color: #008080; ">32</span>聽<span style="color: #000000; ">聽聽聽聽changed聽</span><span style="color: #000000; ">=</span><span style="color: #000000; ">聽</span><span style="color: #0000FF; ">false</span><span style="color: #000000; ">;聽聽<br /></span><span style="color: #008080; ">33</span>聽<span style="color: #000000; ">聽聽聽聽}聽聽<br /></span><span style="color: #008080; ">34</span>聽<span style="color: #000000; ">聽聽聽聽聽聽<br /></span><span style="color: #008080; ">35</span>聽<span style="color: #000000; ">聽聽聽聽</span><span style="color: #008000; ">//</span><span style="color: #008000; ">聽灝嗘暟鎹敼鍙樻爣蹇椾綅璁劇疆涓烘敼鍙樎犅?/span><span style="color: #008000; "><br /></span><span style="color: #008080; ">36</span>聽<span style="color: #008000; "></span><span style="color: #000000; ">聽聽聽聽聽聽<br /></span><span style="color: #008080; ">37</span>聽<span style="color: #000000; ">聽聽聽聽</span><span style="color: #0000FF; ">protected</span><span style="color: #000000; ">聽</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">聽setChanged()聽{聽聽聽<br /></span><span style="color: #008080; ">38</span>聽<span style="color: #000000; ">聽聽聽聽聽聽聽聽changed聽</span><span style="color: #000000; ">=</span><span style="color: #000000; ">聽</span><span style="color: #0000FF; ">true</span><span style="color: #000000; ">;聽聽<br /></span><span style="color: #008080; ">39</span>聽<span style="color: #000000; ">聽聽聽聽}聽聽<br /></span><span style="color: #008080; ">40</span>聽<span style="color: #000000; ">聽聽聽聽聽聽<br /></span><span style="color: #008080; ">41</span>聽<span style="color: #000000; ">聽聽聽聽聽聽<br /></span><span style="color: #008080; ">42</span>聽<span style="color: #000000; ">聽聽聽聽</span><span style="color: #008000; ">//</span><span style="color: #008000; ">聽鍒ゆ柇鏍囧織浣嶇殑鍊悸犅?/span><span style="color: #008000; "><br /></span><span style="color: #008080; ">43</span>聽<span style="color: #008000; "></span><span style="color: #000000; ">聽聽聽聽</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">聽</span><span style="color: #0000FF; ">boolean</span><span style="color: #000000; ">聽hasChanged()聽{聽聽聽<br /></span><span style="color: #008080; ">44</span>聽<span style="color: #000000; ">聽聽聽聽聽聽聽聽</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">聽changed;聽聽<br /></span><span style="color: #008080; ">45</span>聽<span style="color: #000000; ">聽聽聽聽}聽聽<br /></span><span style="color: #008080; ">46</span>聽<span style="color: #000000; ">聽聽聽聽聽聽<br /></span><span style="color: #008080; ">47</span>聽<span style="color: #000000; ">聽聽聽聽</span><span style="color: #008000; ">//</span><span style="color: #008000; ">聽閫氱煡鎵鏈塷bserver錛堟棤鍙傦級聽聽</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">48</span>聽<span style="color: #008000; "></span><span style="color: #000000; ">聽聽聽聽</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">聽</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">聽notifyObservers()聽{聽聽<br /></span><span style="color: #008080; ">49</span>聽<span style="color: #000000; ">聽聽聽聽聽聽聽聽notifyObservers(</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">);聽聽<br /></span><span style="color: #008080; ">50</span>聽<span style="color: #000000; ">聽聽聽聽}聽聽<br /></span><span style="color: #008080; ">51</span>聽<span style="color: #000000; ">聽聽聽聽</span><span style="color: #008000; ">//</span><span style="color: #008000; ">聽閫氱煡鎵鏈塷bserver錛堟湁鍙傦級聽聽</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">52</span>聽<span style="color: #008000; "></span><span style="color: #000000; ">聽聽聽聽@SuppressWarnings(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">unchecked</span><span style="color: #000000; ">"</span><span style="color: #000000; ">)聽聽<br /></span><span style="color: #008080; ">53</span>聽<span style="color: #000000; ">聽聽聽聽</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">聽</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">聽notifyObservers(Object聽data)聽{聽聽聽<br /></span><span style="color: #008080; ">54</span>聽<span style="color: #000000; ">聽聽聽聽聽聽聽聽</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">聽size聽</span><span style="color: #000000; ">=</span><span style="color: #000000; ">聽</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;聽聽聽<br /></span><span style="color: #008080; ">55</span>聽<span style="color: #000000; ">聽聽聽聽聽聽聽聽Observer[]聽arrays聽</span><span style="color: #000000; ">=</span><span style="color: #000000; ">聽</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">;聽聽聽<br /></span><span style="color: #008080; ">56</span>聽<span style="color: #000000; ">聽聽聽聽聽聽聽聽</span><span style="color: #0000FF; ">synchronized</span><span style="color: #000000; ">聽(</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">)聽{聽聽聽<br /></span><span style="color: #008080; ">57</span>聽<span style="color: #000000; ">聽聽聽聽聽聽聽聽聽聽聽聽</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">聽(hasChanged())聽{聽聽聽<br /></span><span style="color: #008080; ">58</span>聽<span style="color: #000000; ">聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽clearChanged();聽聽聽<br /></span><span style="color: #008080; ">59</span>聽<span style="color: #000000; ">聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽size聽</span><span style="color: #000000; ">=</span><span style="color: #000000; ">聽observers.size();聽聽<br /></span><span style="color: #008080; ">60</span>聽<span style="color: #000000; ">聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽arrays聽</span><span style="color: #000000; ">=</span><span style="color: #000000; ">聽</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">聽Observer[size];聽聽聽<br /></span><span style="color: #008080; ">61</span>聽<span style="color: #000000; ">聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽observers.toArray(arrays);聽聽聽<br /></span><span style="color: #008080; ">62</span>聽<span style="color: #000000; ">聽聽聽聽聽聽聽聽聽聽聽聽}聽聽聽<br /></span><span style="color: #008080; ">63</span>聽<span style="color: #000000; ">聽聽聽聽聽聽聽聽}聽聽聽<br /></span><span style="color: #008080; ">64</span>聽<span style="color: #000000; ">聽聽聽聽聽聽聽聽</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">聽(arrays聽</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">聽</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">)聽{聽聽聽<br /></span><span style="color: #008080; ">65</span>聽<span style="color: #000000; ">聽聽聽聽聽聽聽聽聽聽聽聽</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">聽(Observer聽observer聽:聽arrays)聽{聽聽聽<br /></span><span style="color: #008080; ">66</span>聽<span style="color: #000000; ">聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽observer.update(</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">,聽data);聽聽聽<br /></span><span style="color: #008080; ">67</span>聽<span style="color: #000000; ">聽聽聽聽聽聽聽聽聽聽聽聽}聽聽聽<br /></span><span style="color: #008080; ">68</span>聽<span style="color: #000000; ">聽聽聽聽聽聽聽聽}聽聽<br /></span><span style="color: #008080; ">69</span>聽<span style="color: #000000; ">聽聽聽聽}聽聽</span></div><br /><span style="color:#ff0000"><span style="font-family:Arial"></span></span><p><span style="font-family:Arial; font-size:14px; line-height:21px"><span style="color:#ff0000">娉ㄦ剰錛氬湪Observer瀵硅薄閿姣佸墠涓瀹氳鐢╠eleteObserver灝嗗叾浠庡垪琛ㄤ腑鍒犻櫎錛屼篃灝辨槸鍦╫nDestroy()鏂規硶涓皟鐢?span style="font-family:Arial; font-size:14px; line-height:21px"><span style="color:#ff0000">deleteObserver</span></span>()鏂規硶銆?/span></span></p><p><span style="font-family:Arial; font-size:14px; line-height:21px"><span style="color:#ff0000">涓嶇劧鍥犱負榪樺瓨鍦ㄥ璞″紩鐢ㄧ殑鍏崇郴錛孫bserver瀵硅薄涓嶄細琚瀮鍦炬敹闆嗭紝閫犳垚鍐呭瓨娉勬紡錛屽茍涓斿凡姝葷殑Observer浠嶄細琚氱煡鍒幫紝鏈夊彲鑳介犳垚鎰忔枡澶栫殑閿欒錛岃屼笖闅忕潃鍒楄〃瓚婃潵瓚婂ぇ錛宯otifyObservers鎿嶄綔涔熶細瓚婃潵瓚婃參銆?/span></span></p><p><br /></p><p><span style="font-family:Arial; font-size:14px; line-height:21px"><span style="font-family:Arial; font-size:14px; line-height:21px"><span style="font-family:Arial; font-size:14px; color:#333333; line-height:21px"><span style="font-family:Arial; font-size:14px; color:#333333; line-height:21px"><span style="font-family:Helvetica,Tahoma,Arial,sans-serif; font-size:14px; line-height:25px">涓嬮潰2涓伐紼嬫槸Observable涓嶰bserver鐨勭粡鍏歌繍鐢?鏄痑ndroid瀹炵幇鐨勫崟鎸囨嫋鍔ㄦ斁澶у浘鐗囩殑鎿嶄綔</span></span></span></span></span></p><p><span style="font-family:Arial; color:#333333"><span style="font-size:14px; line-height:21px">涓や釜渚嬪瓙錛?/span></span></p><p><span style="font-family:Arial; color:#333333"><span style="font-size:14px; line-height:21px"><a >http://download.csdn.net/detail/tianjf0514/4237628</a><br /></span></span></p><p><span style="font-size:12px"><a >http://download.csdn.net/download/tianjf0514/4237634</a></span></p><p><span style="font-family:Arial; color:#333333"><span style="font-size:14px; line-height:21px"></span></span></p><span style="font-family:Arial; color:#333333"><span style="font-size:14px; line-height:21px"></span></span><img src ="http://www.tkk7.com/tingfeng/aggbug/432686.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/tingfeng/" target="_blank">鍚</a> 2017-07-25 10:39 <a href="http://www.tkk7.com/tingfeng/articles/432686.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title> java綰跨▼姹犵殑縐嶇被鍜屽簲鐢?http://www.tkk7.com/tingfeng/articles/432685.html鍚鍚Tue, 25 Jul 2017 02:35:00 GMThttp://www.tkk7.com/tingfeng/articles/432685.htmlhttp://www.tkk7.com/tingfeng/comments/432685.htmlhttp://www.tkk7.com/tingfeng/articles/432685.html#Feedback0http://www.tkk7.com/tingfeng/comments/commentRss/432685.htmlhttp://www.tkk7.com/tingfeng/services/trackbacks/432685.html 杞彂鑷? http://blog.csdn.net/paul342/article/details/52442932


Java閫氳繃Executors鎻愪緵鍥涚綰跨▼姹狅紝鍒嗗埆涓猴細
newCachedThreadPool鍒涘緩涓涓彲緙撳瓨綰跨▼姹狅紝濡傛灉綰跨▼姹犻暱搴﹁秴榪囧鐞嗛渶瑕侊紝鍙伒媧誨洖鏀剁┖闂茬嚎紼嬶紝鑻ユ棤鍙洖鏀訛紝鍒欐柊寤虹嚎紼嬨?br /> newFixedThreadPool 鍒涘緩涓涓畾闀跨嚎紼嬫睜錛屽彲鎺у埗綰跨▼鏈澶у茍鍙戞暟錛岃秴鍑虹殑綰跨▼浼氬湪闃熷垪涓瓑寰呫?br /> newScheduledThreadPool 鍒涘緩涓涓畾闀跨嚎紼嬫睜錛屾敮鎸佸畾鏃跺強鍛ㄦ湡鎬т換鍔℃墽琛屻?br /> newSingleThreadExecutor 鍒涘緩涓涓崟綰跨▼鍖栫殑綰跨▼姹狅紝瀹冨彧浼氱敤鍞竴鐨勫伐浣滅嚎紼嬫潵鎵ц浠誨姟錛屼繚璇佹墍鏈変換鍔℃寜鐓ф寚瀹氶『搴?FIFO, LIFO, 浼樺厛綰?鎵ц銆?/p>

(1) newCachedThreadPool
鍒涘緩涓涓彲緙撳瓨綰跨▼姹狅紝濡傛灉綰跨▼姹犻暱搴﹁秴榪囧鐞嗛渶瑕侊紝鍙伒媧誨洖鏀剁┖闂茬嚎紼嬶紝鑻ユ棤鍙洖鏀訛紝鍒欐柊寤虹嚎紼嬨傜ず渚嬩唬鐮佸涓嬶細

聽1package聽test;聽聽
聽2import聽java.util.concurrent.ExecutorService;聽聽
聽3import聽java.util.concurrent.Executors;聽聽
聽4publicclass聽ThreadPoolExecutorTest聽{聽聽
聽5publicstaticvoid聽main(String[]聽args)聽{聽聽
聽6聽聽ExecutorService聽cachedThreadPool聽=聽Executors.newCachedThreadPool();聽聽
聽7聽聽for聽(int聽i聽=0;聽i聽<10;聽i++)聽{聽聽
聽8聽聽聽finalint聽index聽=聽i;聽聽
聽9聽聽聽try聽{聽聽
10聽聽聽聽Thread.sleep(index聽*1000);聽聽
11聽聽聽}聽catch聽(InterruptedException聽e)聽{聽聽
12聽聽聽聽e.printStackTrace();聽聽
13聽聽聽}聽聽
14聽聽聽cachedThreadPool.execute(new聽Runnable()聽{聽聽
15聽聽聽聽publicvoid聽run()聽{聽聽
16聽聽聽聽聽System.out.println(index);聽聽
17聽聽聽聽}聽聽
18聽聽聽});聽聽
19聽聽}聽聽
20聽}聽聽
21}聽


綰跨▼姹犱負鏃犻檺澶э紝褰撴墽琛岀浜屼釜浠誨姟鏃剁涓涓換鍔″凡緇忓畬鎴愶紝浼氬鐢ㄦ墽琛岀涓涓換鍔$殑綰跨▼錛岃屼笉鐢ㄦ瘡嬈℃柊寤虹嚎紼嬨?/span>

(2) newFixedThreadPool
鍒涘緩涓涓畾闀跨嚎紼嬫睜錛屽彲鎺у埗綰跨▼鏈澶у茍鍙戞暟錛岃秴鍑虹殑綰跨▼浼氬湪闃熷垪涓瓑寰呫傜ず渚嬩唬鐮佸涓嬶細
聽1聽聽聽聽package聽test;聽聽
聽2聽聽聽聽import聽java.util.concurrent.ExecutorService;聽聽
聽3聽聽聽聽import聽java.util.concurrent.Executors;聽聽
聽4聽聽聽聽publicclass聽ThreadPoolExecutorTest聽{聽聽
聽5聽聽聽聽聽publicstaticvoid聽main(String[]聽args)聽{聽聽
聽6聽聽聽聽聽聽ExecutorService聽fixedThreadPool聽=聽Executors.newFixedThreadPool(3);聽聽
聽7聽聽聽聽聽聽for聽(int聽i聽=0;聽i聽<10;聽i++)聽{聽聽
聽8聽聽聽聽聽聽聽finalint聽index聽=聽i;聽聽
聽9聽聽聽聽聽聽聽fixedThreadPool.execute(new聽Runnable()聽{聽聽
10聽聽聽聽聽聽聽聽publicvoid聽run()聽{聽聽
11聽聽聽聽聽聽聽聽聽try聽{聽聽
12聽聽聽聽聽聽聽聽聽聽System.out.println(index);聽聽
13聽聽聽聽聽聽聽聽聽聽Thread.sleep(2000);聽聽
14聽聽聽聽聽聽聽聽聽}聽catch聽(InterruptedException聽e)聽{聽聽
15聽聽聽聽聽聽聽聽聽聽e.printStackTrace();聽聽
16聽聽聽聽聽聽聽聽聽}聽聽
17聽聽聽聽聽聽聽聽}聽聽
18聽聽聽聽聽聽聽});聽聽
19聽聽聽聽聽聽}聽聽
20聽聽聽聽聽}聽聽
21聽聽聽聽}聽聽

鍥犱負綰跨▼姹犲ぇ灝忎負3錛屾瘡涓換鍔¤緭鍑篿ndex鍚巗leep 2縐掞紝鎵浠ユ瘡涓ょ鎵撳嵃3涓暟瀛椼?br /> 瀹氶暱綰跨▼姹犵殑澶у皬鏈濂芥牴鎹郴緇熻祫婧愯繘琛岃緗傚Runtime.getRuntime().availableProcessors()

(3)聽 newScheduledThreadPool
鍒涘緩涓涓畾闀跨嚎紼嬫睜錛屾敮鎸佸畾鏃跺強鍛ㄦ湡鎬т換鍔℃墽琛屻傚歡榪熸墽琛岀ず渚嬩唬鐮佸涓嬶細

聽1聽聽聽聽package聽test;聽聽
聽2聽聽聽聽import聽java.util.concurrent.Executors;聽聽
聽3聽聽聽聽import聽java.util.concurrent.ScheduledExecutorService;聽聽
聽4聽聽聽聽import聽java.util.concurrent.TimeUnit;聽聽
聽5聽聽聽聽publicclass聽ThreadPoolExecutorTest聽{聽聽
聽6聽聽聽聽聽publicstaticvoid聽main(String[]聽args)聽{聽聽
聽7聽聽聽聽聽聽ScheduledExecutorService聽scheduledThreadPool聽=聽Executors.newScheduledThreadPool(5);聽聽
聽8聽聽聽聽聽聽scheduledThreadPool.schedule(new聽Runnable()聽{聽聽
聽9聽聽聽聽聽聽聽publicvoid聽run()聽{聽聽
10聽聽聽聽聽聽聽聽System.out.println("delay聽3聽seconds");聽聽
11聽聽聽聽聽聽聽}聽聽
12聽聽聽聽聽聽},聽3,聽TimeUnit.SECONDS);聽聽
13聽聽聽聽聽}聽聽
14聽聽聽聽}聽聽

琛ㄧず寤惰繜3縐掓墽琛屻?/p>

瀹氭湡鎵ц紺轟緥浠g爜濡備笅錛?/p>

聽1聽聽聽聽package聽test;聽聽
聽2聽聽聽聽import聽java.util.concurrent.Executors;聽聽
聽3聽聽聽聽import聽java.util.concurrent.ScheduledExecutorService;聽聽
聽4聽聽聽聽import聽java.util.concurrent.TimeUnit;聽聽
聽5聽聽聽聽publicclass聽ThreadPoolExecutorTest聽{聽聽
聽6聽聽聽聽聽publicstaticvoid聽main(String[]聽args)聽{聽聽
聽7聽聽聽聽聽聽ScheduledExecutorService聽scheduledThreadPool聽=聽Executors.newScheduledThreadPool(5);聽聽
聽8聽聽聽聽聽聽scheduledThreadPool.scheduleAtFixedRate(new聽Runnable()聽{聽聽
聽9聽聽聽聽聽聽聽publicvoid聽run()聽{聽聽
10聽聽聽聽聽聽聽聽System.out.println("delay聽1聽seconds,聽and聽excute聽every聽3聽seconds");聽聽
11聽聽聽聽聽聽聽}聽聽
12聽聽聽聽聽聽},聽1,聽3,聽TimeUnit.SECONDS);聽聽
13聽聽聽聽聽}聽聽
14聽聽聽聽}聽聽

琛ㄧず寤惰繜1縐掑悗姣?縐掓墽琛屼竴嬈°?/p>

(4) newSingleThreadExecutor
鍒涘緩涓涓崟綰跨▼鍖栫殑綰跨▼姹狅紝瀹冨彧浼氱敤鍞竴鐨勫伐浣滅嚎紼嬫潵鎵ц浠誨姟錛屼繚璇佹墍鏈変換鍔℃寜鐓ф寚瀹氶『搴?FIFO, LIFO, 浼樺厛綰?鎵ц銆傜ず渚嬩唬鐮佸涓嬶細

聽1package聽test;聽聽
聽2import聽java.util.concurrent.ExecutorService;聽聽
聽3import聽java.util.concurrent.Executors;聽聽
聽4publicclass聽ThreadPoolExecutorTest聽{聽聽
聽5publicstaticvoid聽main(String[]聽args)聽{聽聽
聽6聽聽ExecutorService聽singleThreadExecutor聽=聽Executors.newSingleThreadExecutor();聽聽
聽7聽聽for聽(int聽i聽=0;聽i聽<10;聽i++)聽{聽聽
聽8聽聽聽finalint聽index聽=聽i;聽聽
聽9聽聽聽singleThreadExecutor.execute(new聽Runnable()聽{聽聽
10聽聽聽聽publicvoid聽run()聽{聽聽
11聽聽聽聽聽try聽{聽聽
12聽聽聽聽聽聽System.out.println(index);聽聽
13聽聽聽聽聽聽Thread.sleep(2000);聽聽
14聽聽聽聽聽}聽catch聽(InterruptedException聽e)聽{聽聽
15聽聽聽聽聽聽e.printStackTrace();聽聽
16聽聽聽聽聽}聽聽
17聽聽聽聽}聽聽
18聽聽聽});聽聽
19聽聽}聽聽
20聽}聽聽
21}聽

緇撴灉渚濇杈撳嚭錛岀浉褰撲簬欏哄簭鎵ц鍚勪釜浠誨姟銆?/p>

浣犲彲浠ヤ嬌鐢↗DK鑷甫鐨勭洃鎺у伐鍏鋒潵鐩戞帶鎴戜滑鍒涘緩鐨勭嚎紼嬫暟閲忥紝榪愯涓涓笉緇堟鐨勭嚎紼嬶紝鍒涘緩鎸囧畾閲忕殑綰跨▼錛屾潵瑙傚療錛?br /> 宸ュ叿鐩綍錛?strong style="font-weight:bold">C:\Program Files\Java\jdk1.6.0_06\bin\jconsole.exe
榪愯紼嬪簭鍋氱◢寰慨鏀癸細

聽1聽聽聽聽package聽test;聽聽
聽2聽聽聽聽import聽java.util.concurrent.ExecutorService;聽聽
聽3聽聽聽聽import聽java.util.concurrent.Executors;聽聽
聽4聽聽聽聽publicclass聽ThreadPoolExecutorTest聽{聽聽
聽5聽聽聽聽聽publicstaticvoid聽main(String[]聽args)聽{聽聽
聽6聽聽聽聽聽聽ExecutorService聽singleThreadExecutor聽=聽Executors.newCachedThreadPool();聽聽
聽7聽聽聽聽聽聽for聽(int聽i聽=0;聽i聽<100;聽i++)聽{聽聽
聽8聽聽聽聽聽聽聽finalint聽index聽=聽i;聽聽
聽9聽聽聽聽聽聽聽singleThreadExecutor.execute(new聽Runnable()聽{聽聽
10聽聽聽聽聽聽聽聽publicvoid聽run()聽{聽聽
11聽聽聽聽聽聽聽聽聽try聽{聽聽
12聽聽聽聽聽聽聽聽聽聽while(true)聽{聽聽
13聽聽聽聽聽聽聽聽聽聽聽System.out.println(index);聽聽
14聽聽聽聽聽聽聽聽聽聽聽Thread.sleep(10*1000);聽聽
15聽聽聽聽聽聽聽聽聽聽}聽聽
16聽聽聽聽聽聽聽聽聽}聽catch聽(InterruptedException聽e)聽{聽聽
17聽聽聽聽聽聽聽聽聽聽e.printStackTrace();聽聽
18聽聽聽聽聽聽聽聽聽}聽聽
19聽聽聽聽聽聽聽聽}聽聽
20聽聽聽聽聽聽聽});聽聽
21聽聽聽聽聽聽聽try聽{聽聽
22聽聽聽聽聽聽聽聽Thread.sleep(500);聽聽
23聽聽聽聽聽聽聽}聽catch聽(InterruptedException聽e)聽{聽聽
24聽聽聽聽聽聽聽聽e.printStackTrace();聽聽
25聽聽聽聽聽聽聽}聽聽
26聽聽聽聽聽聽}聽聽
27聽聽聽聽聽}聽聽
28聽聽聽聽}聽聽

鏁堟灉濡備笅錛?/p>

閫夋嫨鎴戜滑榪愯鐨勭▼搴忥細

鐩戞帶榪愯鐘舵?/p>

鍚 2017-07-25 10:35 鍙戣〃璇勮
]]>濡備綍緙栧啓澶氱嚎紼婼ocket紼嬪簭 http://www.tkk7.com/tingfeng/articles/432684.html鍚鍚Tue, 25 Jul 2017 02:30:00 GMThttp://www.tkk7.com/tingfeng/articles/432684.htmlhttp://www.tkk7.com/tingfeng/comments/432684.htmlhttp://www.tkk7.com/tingfeng/articles/432684.html#Feedback0http://www.tkk7.com/tingfeng/comments/commentRss/432684.htmlhttp://www.tkk7.com/tingfeng/services/trackbacks/432684.html

1銆佸浣曠紪鍐欏綰跨▼Socket紼嬪簭

浜嗚ВSocket鐪嬭繖閲岋細Socket鏄粈涔?/a>
澶氱嚎紼婼ocket涓庡崟綰跨▼綾諱技錛屽彧鏄嬌鐢ㄤ簡澶氱嚎紼嬬殑鏂瑰紡鏉ョ鐞嗚繛鎺ワ紝涓葷嚎紼嬭礋璐f帴鏀惰繛鎺?/font>錛屽湪鎺ュ埌榪炴帴鍚庡彉鍒涘緩鏂扮殑綰跨▼錛屾瘡涓嚎紼嬭礋璐d笌鑷繁鐨勫鎴風榪涜閫氫俊銆?/p>

浜嗚В鍗曠嚎紼婼ocket鐪嬭繖閲岋細濡備綍緙栧啓鍗曞綰跨▼Socket紼嬪簭

涓庡崟綰跨▼Socket渚嬪瓙鐩告瘮鏉ヨ錛屾湇鍔$鍙互涓?font color="#ff0000">澶氫釜瀹㈡埛绔?/font>榪涜閫氫俊浜嗭紝涓嶈繃澶氱嚎紼嬮綣佺殑鍒涘緩涓庨攢姣佷究浼氬甫鏉?font color="#ff0000">寰堝ぇ鐨勮祫婧愬紑閿錛岃岀郴緇熺殑緗戠粶璧勬簮絳夐兘鏄湁闄愮殑銆傚洜姝や竴鑸細寮曞叆綰跨▼姹?/font>錛屽彲浠ュ湪鏌愮紼嬪害涓婇噸鐢ㄧ嚎紼嬶紝鍑忓皯綰跨▼鐨勫垱寤哄拰閿姣佺殑嬈℃暟浠?font color="#ff0000">鍑忓皯寮閿銆?/p>

鎴戜滑鐨勪唬鐮佷篃鍒嗕負瀹㈡埛绔拰鏈嶅姟绔?/font>涓ら儴鍒嗐傛湇鍔$鐨勪唬鐮佷腑鍖呭惈浜?font color="#ff0000">浣跨敤鍜屼笉浣跨敤綰跨▼姹?/font>鐨勪袱縐嶆柟寮忋?/p>

鏈嶅姟绔唬鐮?/font>錛?/p>

聽1import聽java.io.BufferedReader;
聽2import聽java.io.IOException;
聽3import聽java.io.InputStreamReader;
聽4import聽java.io.PrintWriter;
聽5import聽java.net.ServerSocket;
聽6import聽java.net.Socket;
聽7import聽java.util.concurrent.ExecutorService;
聽8import聽java.util.concurrent.Executors;
聽9
10publicclass聽SocketThreadPoolDemoServer聽{
11
12聽聽聽聽privateint聽port聽=8000;
13
14聽聽聽聽private聽ServerSocket聽serverSocket;
15
16聽聽聽聽private聽ExecutorService聽executorService;聽//聽榪炴帴姹?/span>
17
18聽聽聽聽privatefinalint聽POOL_SIZE聽=1;聽//聽榪炴帴姹犲ぇ灝徛?聽鑻ヤ負聽1聽鏃舵渶澶氭敮鎸伮?聽綰跨▼
19
20聽聽聽聽public聽SocketThreadPoolDemoServer()聽throws聽Exception聽{
21聽聽聽聽聽聽聽聽serverSocket聽=new聽ServerSocket(port);
22聽聽聽聽聽聽聽聽executorService聽=聽Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors()聽*聽POOL_SIZE);//聽鍒濆鍖栫嚎紼嬫睜
23聽聽聽聽聽聽聽聽System.out.println("waitting聽connet");
24
25聽聽聽聽}
26
27聽聽聽聽/**
28聽聽聽聽聽*
29聽聽聽聽聽*聽鎺ュ彈榪炴帴
30聽聽聽聽聽*
31聽聽聽聽聽*聽@author聽sunjie聽at聽2016騫?鏈?4鏃?br />32聽聽聽聽聽*
33聽聽聽聽聽*/
34聽聽聽聽publicvoid聽service()聽{
35聽聽聽聽聽聽聽聽Socket聽socket聽=null;
36聽聽聽聽聽聽聽聽while聽(true)聽{
37聽聽聽聽聽聽聽聽聽聽聽聽try聽{
38聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽socket聽=聽serverSocket.accept();
39聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽executorService.execute(new聽Handler(socket));聽//聽浣跨敤榪炴帴姹?br />40聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽//聽new聽Thread(new聽Handler(socket)).start();//聽涓嶄嬌鐢ㄨ繛鎺ユ睜
41聽聽聽聽聽聽聽聽聽聽聽聽}聽catch聽(IOException聽e)聽{
42聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽e.printStackTrace();
43聽聽聽聽聽聽聽聽聽聽聽聽}
44聽聽聽聽聽聽聽聽}
45聽聽聽聽}
46
47聽聽聽聽/**
48聽聽聽聽聽*
49聽聽聽聽聽*聽綰跨▼綾伙紝璐熻矗緇存寔涓庝竴涓鎴風鐨勯氫俊
50聽聽聽聽聽*
51聽聽聽聽聽*聽@author聽sunjie聽at聽2016騫?鏈?4鏃?br />52聽聽聽聽聽*
53聽聽聽聽聽*/
54聽聽聽聽class聽Handler聽implements聽Runnable聽{
55
56聽聽聽聽聽聽聽聽private聽Socket聽socket聽=null;
57
58聽聽聽聽聽聽聽聽public聽Handler(Socket聽socket)聽{
59聽聽聽聽聽聽聽聽聽聽聽聽this.socket聽=聽socket;
60聽聽聽聽聽聽聽聽}
61
62聽聽聽聽聽聽聽聽@Override
63聽聽聽聽聽聽聽聽publicvoid聽run()聽{
64聽聽聽聽聽聽聽聽聽聽聽聽System.out.println("new聽connection聽accepted:"+聽socket.getInetAddress()聽+":"+聽socket.getPort());
65聽聽聽聽聽聽聽聽聽聽聽聽try聽{
66聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽BufferedReader聽reader聽=new聽BufferedReader(new聽InputStreamReader(socket.getInputStream(),聽"UTF-8"));
67聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽PrintWriter聽writer聽=new聽PrintWriter(socket.getOutputStream());
68聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽String聽msg聽=null;
69聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽while聽((msg聽=聽reader.readLine())聽!=null)聽{
70聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽System.out.println("from聽"+聽socket.getInetAddress()聽+":"+聽socket.getPort()聽+",聽receive聽msg:"
71聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽+聽msg);
72聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽writer.println(msg);
73聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽writer.flush();
74聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽if聽("close".equals(msg))聽{
75聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽break;
76聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽}
77聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽}
78聽聽聽聽聽聽聽聽聽聽聽聽}聽catch聽(IOException聽e)聽{
79聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽e.printStackTrace();
80聽聽聽聽聽聽聽聽聽聽聽聽}聽finally聽{
81聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽try聽{
82聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽if聽(socket聽!=null)聽{
83聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽socket.close();
84聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽}
85聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽}聽catch聽(IOException聽e)聽{
86聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽e.printStackTrace();
87聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽}
88聽聽聽聽聽聽聽聽聽聽聽聽}
89聽聽聽聽聽聽聽聽}
90聽聽聽聽}
91
92聽聽聽聽publicstaticvoid聽main(String[]聽args)聽throws聽Exception聽{
93聽聽聽聽聽聽聽聽new聽SocketThreadPoolDemoServer().service();
94聽聽聽聽}
95}
96
97

榪愯鏈嶅姟绔唬鐮佸悗錛岀▼搴忎細涓鐩磋繘琛岀洃鍚?/font>錛岀洿鍒版帴鏀跺埌瀹㈡埛绔姹備負姝€傜粨鏋滃涓嬶細

waitting connet鈥?/p>

瀹㈡埛绔唬鐮?/font>錛堜笌鍗曠嚎紼嬪畬鍏ㄧ浉鍚岋級錛?/p>

聽1publicclass聽SocketDemoClient聽{
聽2
聽3聽聽聽聽private聽String聽host聽="127.0.0.1";//聽瑕佸彂閫佺粰鏈嶅姟绔殑ip
聽4
聽5聽聽聽聽privateint聽port聽=8000;//聽瑕佸彂閫佺粰鏈嶅姟绔殑绔彛
聽6
聽7聽聽聽聽private聽Socket聽socket;
聽8
聽9聽聽聽聽public聽SocketDemoClient()聽throws聽Exception聽{
10聽聽聽聽聽聽聽聽socket聽=new聽Socket(host,聽port);//聽鏋勯燬ocket瀹㈡埛绔紝騫朵笌榪炴帴鏈嶅姟绔?/span>
11聽聽聽聽}
12
13聽聽聽聽publicvoid聽talk()聽throws聽IOException聽{
14聽聽聽聽聽聽聽聽try聽{
15聽聽聽聽聽聽聽聽聽聽聽聽BufferedReader聽reader聽=new聽BufferedReader(new聽InputStreamReader(socket.getInputStream(),聽"UTF-8"));
16聽聽聽聽聽聽聽聽聽聽聽聽PrintWriter聽writer聽=new聽PrintWriter(socket.getOutputStream());
17聽聽聽聽聽聽聽聽聽聽聽聽//聽璇誨彇鏈湴鎺у埗鍙扮殑娑堟伅
18聽聽聽聽聽聽聽聽聽聽聽聽BufferedReader聽localReader聽=new聽BufferedReader(new聽InputStreamReader(System.in));
19聽聽聽聽聽聽聽聽聽聽聽聽String聽msg聽=null;
20聽聽聽聽聽聽聽聽聽聽聽聽while聽((msg聽=聽localReader.readLine())聽!=null)聽{
21聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽writer.println(msg);
22聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽writer.flush();
23聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽System.out.println("send聽msg:"+聽reader.readLine());
24聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽if聽("close".equals(msg))聽{
25聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽break;
26聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽}
27聽聽聽聽聽聽聽聽聽聽聽聽}
28聽聽聽聽聽聽聽聽}聽catch聽(Exception聽e)聽{
29聽聽聽聽聽聽聽聽聽聽聽聽e.printStackTrace();
30聽聽聽聽聽聽聽聽}聽finally聽{
31聽聽聽聽聽聽聽聽聽聽聽聽if聽(socket聽!=null)聽{
32聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽socket.close();
33聽聽聽聽聽聽聽聽聽聽聽聽}
34聽聽聽聽聽聽聽聽}
35聽聽聽聽}
36
37聽聽聽聽publicstaticvoid聽main(String[]聽args)聽throws聽Exception聽{
38聽聽聽聽聽聽聽聽new聽SocketDemoClient().talk();
39聽聽聽聽}
40}

鐢變簬鎴戜滑瑕?a class="replace_word" title="杞歡嫻嬭瘯鐭ヨ瘑搴? target="_blank" style="color:#df3434; font-weight:bold;">嫻嬭瘯澶氫釜瀹㈡埛绔繛鎺ュ悓涓涓湇鍔$錛屾墍浠ユ垜浠渶瑕?font color="#ff0000">澶氭榪愯瀹㈡埛绔唬鐮?/font>銆傝繖閲屾垜浠繍琛屼袱嬈′箣鍚庯紙縐頒負瀹㈡埛绔?銆佸鎴風2錛夛紝鏌ョ湅鏈嶅姟绔殑Console錛屼細鍑虹幇浠ヤ笅緇撴灉錛岃鏄庡凡緇忚繛鎺ユ垚鍔燂細

waitting connet鈥?
new connection accepted:/127.0.0.1:59593
new connection accepted:/127.0.0.1:59596

鎴戜滑鍦ㄥ幓瀹㈡埛绔?鐨凜onsole涓緭鍏ユ垜浠鍙戦佺殑娑堟伅鈥濈淮鎶や笘鐣屽拰騫斥濓紝鍥炶濺紜畾鍚庯紝瀹㈡埛绔?鐨凜onsole鍑虹幇浠ヤ笅緇撴灉錛屾秷鎭凡緇忓彂鍑猴細

send msg:緇存姢涓栫晫鍜屽鉤

鍐嶅幓瀹㈡埛绔?鐨凜onsole涓緭鍏モ濆ソ濂藉涔犲ぉ澶╁悜涓娾濓紝鍥炶濺紜畾鍚庯紝瀹㈡埛绔?鐨凜onsole鍑虹幇浠ヤ笅緇撴灉錛屾秷鎭凡緇忓彂鍑猴細

send msg:濂藉ソ瀛︿範澶╁ぉ鍚戜笂

鍦ㄦ湇鍔$鐨凜onsole涓紝鎴戜滑浼氱湅鍒板涓嬬粨鏋滐紝璇存槑涓や釜瀹㈡埛绔殑娑堟伅宸茬粡琚帴鍙?/font>錛?/p>

waitting connet鈥?
new connection accepted:/127.0.0.1:59593
new connection accepted:/127.0.0.1:59596
from /127.0.0.1:59593, receive msg:緇存姢涓栫晫鍜屽鉤
from /127.0.0.1:59596, receive msg:濂藉ソ瀛︿範澶╁ぉ鍚戜笂



鍚 2017-07-25 10:30 鍙戣〃璇勮
]]>
Android 瀹炵幇PPPoE鎷ㄥ彿http://www.tkk7.com/tingfeng/articles/432594.html鍚鍚Thu, 08 Jun 2017 13:19:00 GMThttp://www.tkk7.com/tingfeng/articles/432594.htmlhttp://www.tkk7.com/tingfeng/comments/432594.htmlhttp://www.tkk7.com/tingfeng/articles/432594.html#Feedback0http://www.tkk7.com/tingfeng/comments/commentRss/432594.htmlhttp://www.tkk7.com/tingfeng/services/trackbacks/432594.htmlhttp://blog.csdn.net/wqx_163/article/details/50704252

鍚 2017-06-08 21:19 鍙戣〃璇勮
]]>
Android shell鍛戒護鏌ヨip錛岀綉鍏籌紝DNShttp://www.tkk7.com/tingfeng/articles/432593.html鍚鍚Thu, 08 Jun 2017 13:18:00 GMThttp://www.tkk7.com/tingfeng/articles/432593.htmlhttp://www.tkk7.com/tingfeng/comments/432593.htmlhttp://www.tkk7.com/tingfeng/articles/432593.html#Feedback0http://www.tkk7.com/tingfeng/comments/commentRss/432593.htmlhttp://www.tkk7.com/tingfeng/services/trackbacks/432593.htmlhttp://www.cnblogs.com/mypsq/p/5821953.html

鍚 2017-06-08 21:18 鍙戣〃璇勮
]]>
主站蜘蛛池模板: 亚洲午夜精品久久久久久人妖| 亚洲人成网站色在线入口| 亚洲av无码偷拍在线观看| 亚洲国产成人久久综合碰| 免费无码H肉动漫在线观看麻豆| 久久夜色精品国产嚕嚕亚洲av| 在线免费观看亚洲| 亚洲成a∨人片在无码2023| 亚洲精品国产电影| 99精品视频在线观看免费专区| 亚洲色大成WWW亚洲女子| 曰韩亚洲av人人夜夜澡人人爽| 每天更新的免费av片在线观看| 18禁亚洲深夜福利人口| 久久亚洲精品无码| 国产成人高清精品免费鸭子 | 亚洲欧洲在线观看| 无码免费午夜福利片在线| 日本一区二区三区在线视频观看免费 | 中国国语毛片免费观看视频| 亚洲国产成人91精品| 亚洲一区无码精品色| 免费三级毛片电影片| 中文字幕乱码免费看电影| 亚洲AV无码成人网站在线观看| 亚洲高清在线播放| 亚洲精品97久久中文字幕无码| 午夜国产精品免费观看| 黄色网页在线免费观看| 亚洲精品美女久久久久久久| 亚洲天天在线日亚洲洲精| 亚洲А∨精品天堂在线| 久久不见久久见中文字幕免费 | 亚洲一区二区三区在线视频| 狠狠色伊人亚洲综合网站色| 97性无码区免费| 亚洲乱亚洲乱淫久久| 免费h视频在线观看| 亚洲码一区二区三区| 91国内免费在线视频| 免费一区二区视频|