自上而下是說的同一函數(shù)內(nèi)的順序和函數(shù)調(diào)用順序,不是指的文件里的行號。例如無論寫在第幾行,main函數(shù)都是要首先運(yùn)行的。
成都創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供淶水網(wǎng)站建設(shè)、淶水做網(wǎng)站、淶水網(wǎng)站設(shè)計(jì)、淶水網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、淶水企業(yè)網(wǎng)站模板建站服務(wù),10年淶水做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
在你要結(jié)束的地方添加System.exit(0);就行了,執(zhí)行改行代碼后,當(dāng)前程序就會結(jié)束
本來用DWR調(diào)用方法就是多線程的,線程總數(shù)與J2EE容器配置的有關(guān)。
建議如下:
如果你這個(gè)A()調(diào)用的接口一次只允許一個(gè)訪問,那么需要在A所在的類里設(shè)置一個(gè)靜態(tài)成員變量,如static
String
object
=
"some"。
然后在A()方法一開始用synchronized
(object)
{..
}把代碼都包含進(jìn)來。
這樣可以確保一次只有一個(gè)訪問。
如果接口一次最多運(yùn)行固定數(shù)目的訪問,如10個(gè)。那么復(fù)雜一些,不過我估計(jì)你不是這個(gè)情況。一般建議這個(gè)固定數(shù)目與J2EE容器配置的線程數(shù)一致即可。
上述方法都是為了防止接口被同時(shí)訪問,但這樣的后果就是前端用戶會等待,甚至線程滿。前端等待是沒辦法的,后面慢,前面只有排隊(duì)了。線程滿的話,最好的方式是采用非阻塞的IO(NIO),不過那個(gè)很難做到。你提出的10秒終止方法是一種方案,不過關(guān)鍵在于如何終止一個(gè)方法的運(yùn)行。
很遺憾,Java不能任意終止一個(gè)方法的運(yùn)行,不過對于接口操作,可以如下處理:
a)
如果接口是TCP/IP,那么可以通過強(qiáng)行關(guān)閉socket來終止。如:
timer.schedule(
new
TimerTask()
{
public
void
run()
{
socket.close();
}
},
10000);
b)
如果接口是用類庫的話,看看它有沒有設(shè)置timeout的地方,如果有,那么設(shè)置一下,如果沒有,那么沒辦法了。
補(bǔ)充:
你用了axis的setTimeout,理論上超過10秒后call.invoke會拋出異常的。
假設(shè)后臺很慢,每次都需要10秒,假設(shè)weblogic線程池大小為50,那么如果同時(shí)訪問的人超過50個(gè),或者每秒訪問量超過5個(gè),那么就會發(fā)生線程阻塞。
這是系統(tǒng)性能問題,可以將weblogic的線程池最大數(shù)量設(shè)置高些來增加吞吐量。不過這種方式治標(biāo)不治本,如果你的程序預(yù)計(jì)到并發(fā)訪問量很大,那么后臺響應(yīng)超過1秒就不太合理了,這個(gè)改動(dòng)起來就很麻煩了。
當(dāng)前名稱:java代碼不往下執(zhí)行 java無法從靜態(tài)上下文
當(dāng)前路徑:http://aaarwkj.com/article6/dochoog.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)、手機(jī)網(wǎng)站建設(shè)、網(wǎng)站營銷、品牌網(wǎng)站設(shè)計(jì)、網(wǎng)頁設(shè)計(jì)公司、網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)