新寫(xiě)了一個(gè)Java并發(fā)程序設(shè)計(jì)教程, 用于公司內(nèi)部培訓(xùn)的,和2007年寫(xiě)的那個(gè)相比,內(nèi)容更翔實(shí)一些。
內(nèi)容列表
1、使用線程的經(jīng)驗(yàn):設(shè)置名稱(chēng)、響應(yīng)中斷、使用ThreadLocal
2、Executor :ExecutorService和Future ☆ ☆ ☆
3、阻塞隊(duì)列 : put和take、offer和poll、drainTo
4、線程間的協(xié)調(diào)手段:lock、condition、wait、notify、notifyAll ☆ ☆ ☆
5、Lock-free: atomic、concurrentMap.putIfAbsent、CopyOnWriteArrayList ☆ ☆ ☆
6、關(guān)于鎖使用的經(jīng)驗(yàn)介紹
7、并發(fā)流程控制手段:CountDownlatch、Barrier
8、定時(shí)器: ScheduledExecutorService、大規(guī)模定時(shí)器TimerWheel
9、并發(fā)三大定律:Amdahl、Gustafson、Sun-Ni
10、神人和圖書(shū)
11、業(yè)界發(fā)展情況: GPGPU、OpenCL
12、復(fù)習(xí)題
下載地址:
http://files.cnblogs.com/jobs/Java%e5%b9%b6%e5%8f%91%e7%a8%8b%e5%ba%8f%e8%ae%be%e8%ae%a1%e6%95%99%e7%a8%8b.pdf
歡迎看了之后寫(xiě)反饋給我。
博客園的文章地址:
http://www.cnblogs.com/jobs/archive/2010/07/29/1788156.html
Google云計(jì)算AppEngine
Java版剛剛推出來(lái)的時(shí)候,我就申請(qǐng)了該服務(wù)。該服務(wù)的申請(qǐng)需要提供手機(jī)號(hào)碼驗(yàn)證,GOOGLE很牛B,能夠發(fā)送全球的手機(jī)短信。申請(qǐng)的帳號(hào)放了很久,
前段時(shí)間學(xué)習(xí)OpenID,需要作一個(gè)范例,于是就在Google
AppEngine上作,作的過(guò)程發(fā)現(xiàn)其不能使用線程,導(dǎo)致HttpClient組件無(wú)法工作,于是我修改了OpenID4Java的實(shí)現(xiàn),全部使用
URLConnection來(lái)實(shí)現(xiàn)。最終程序部署成功了,網(wǎng)址 http://cogito-study.appspot.com,歡迎大家測(cè)試使用。
我來(lái)說(shuō)一下我對(duì)Google AppEngine Java版本的使用感受吧。
1、
Google AppEngine
Java版本,具備基本功能,但是由于缺乏一些重要的功能,例如線程,沒(méi)有線程,很多庫(kù)無(wú)法使用,例如我上面提到的HttpClient不能使用。
Google提供一個(gè)類(lèi)的白名單http://code.google.com/intl/zh-CN/appengine/docs/java
/jrewhitelist.html,大多數(shù)需要使用的類(lèi)都有,javax.xml.crypto不再其中,使得我要部署一個(gè)SAML2的實(shí)現(xiàn)時(shí)玩不
轉(zhuǎn)。
2、Google
AppEngine提供了一個(gè)DataStore,使用JDO訪問(wèn)數(shù)據(jù),其查詢語(yǔ)言支持GQL。基本功能是具備的,但是也是存在很大的局限性,最多返回
1000行數(shù)據(jù),COUNT(*)也是最多返回1000行。這個(gè)限制使得很多應(yīng)用要跑在其上,會(huì)很麻煩。
3、部署很簡(jiǎn)單,在Eclipse中使用Google提供的插件,輸入帳號(hào)密碼就可以部署了,太簡(jiǎn)單了。但我使用的過(guò)程中,經(jīng)常出現(xiàn)某些時(shí)段無(wú)法部署的情況,通常遇到這種情況,多嘗試幾次或者過(guò)段時(shí)間再嘗試就好了。
4、管理界面簡(jiǎn)潔方便,功能基本完備。包括性能監(jiān)控、數(shù)據(jù)管理、日志、計(jì)費(fèi)等都有。
總結(jié)
Google的AppEngine Java版本已經(jīng)具備了基本功能,可以部署簡(jiǎn)單應(yīng)用了,但是由于其功能不夠完備,目前大多數(shù)應(yīng)用要部署在其上,都會(huì)要做相當(dāng)大的修改或者無(wú)法實(shí)現(xiàn)。
我在Google AppEngine上部署了一個(gè)Java應(yīng)用(OpenID測(cè)試)
http://cogito-study.appspot.com
Google Apps不支持線程,所用到的庫(kù)openid4java需要?jiǎng)?chuàng)建線程(因?yàn)镠ttpClient),我修改了openid4java的實(shí)現(xiàn),使得其支持Google App Engine。
部署在Google App Engine上的應(yīng)用可以應(yīng)用任何OpenID Provider登陸,包括Google、Yahoo、MSN等。
你可以通過(guò)這個(gè)測(cè)試網(wǎng)站了解OpenID