『壹』 java連接mysql資料庫超時的問題誰遇到過
推測你指的是mysql伺服器的超時吧。默認情況8小時無訪問mysql會斷開連接。通過改配置文件可以改變這個值,但是實際測試效果不好。
mysql方面不好解決就在client端想辦法,大多數鏈接池可以配置在取得鏈接時檢測可用性(據說c3p0連接池可以自動解決,我用的dbcp需要配置),比如ibatis可以在datasource配置加上<property
name="validationQuery"
value="select
1
from
al"/>
<property
name="testOnBorrow"
value="true"/>
『貳』 java 方法 執行超時處理
java 1.5以上的Future類可以執行超時處理。
jdk1.5自帶的並發庫中Future類中重要方法包括get()和cancel(),get()獲取數據對象,如果數據沒有載入,就會阻塞直到取到數據,而 cancel()是取消數據載入。另外一個get(timeout)操作,表示如果在timeout時間內沒有取到就失敗返回,而不再阻塞。
代碼如下:
importjava.util.concurrent.Callable;
importjava.util.concurrent.ExecutionException;
importjava.util.concurrent.ExecutorService;
importjava.util.concurrent.Executors;
importjava.util.concurrent.TimeUnit;
importcom.sun.corba.se.impl.orbutil.closure.Future;
importcom.sun.corba.se.impl.orbutil.threadpool.TimeoutException;
publicclassThreadTest{
publicstaticvoidmain(String[]args)throwsInterruptedException,
ExecutionException{
finalExecutorServiceexec=Executors.newFixedThreadPool(1);
Callable<String>call=newCallable<String>(){
publicStringcall()throwsException{
//開始執行耗時操作
Thread.sleep(1000*5);
return"線程執行完成.";
}
};
try{
Future<String>future=exec.submit(call);
Stringobj=future.get(1000*1,TimeUnit.MILLISECONDS);//任務處理超時時間設為1秒
System.out.println("任務成功返回:"+obj);
}catch(TimeoutExceptionex){
System.out.println("處理超時啦....");
ex.printStackTrace();
}catch(Exceptione){
System.out.println("處理失敗.");
e.printStackTrace();
}
//關閉線程池
exec.shutdown();
}
}
『叄』 怎麼做java超時處理方法
importjava.text.SimpleDateFormat;
importjava.util.Date;
importjava.util.concurrent.Callable;
importjava.util.concurrent.Future;
importjava.util.concurrent.FutureTask;
importjava.util.concurrent.TimeUnit;
classTest26{
publicstaticvoidmain(String[]args){
SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss");
System.out.println("開始:"+sdf.format(newDate()));
Future<String>future=newFutureTask<String>(newCallable<String>(){
publicStringcall()throwsException{
test();
returnnull;
}
});
try{
future.get(10,TimeUnit.SECONDS);//執行10秒結束
}catch(Exceptione){
}
System.out.println("結束:"+sdf.format(newDate()));
}
publicstaticvoidtest(){
inti=1;
while(true){
if(i==0){
break;
}
}
}
}
『肆』 Java:連接請求超時是什麼意思超時就不再請求了
連接請求超時 是在請求資料庫或者請求網頁時 防止應用一直佔用資源的一個解決辦法。
連接請求超時,一般是網路中斷、阻塞等由於網路的問題造成的臨時原因。
一般情況下連接超時之後,就進行再次請求,如果重復三次之後仍然是超時 那就不再請求了。
『伍』 如何模擬java介面請求超時
網路卡頓。模擬java介面請求超時是因為網路卡頓造成的,更換網路重新進入即可解決此問題。該介面是一系列方法的聲明,是一些方法特徵的集合,一個介面只有方法的特徵沒有方法的實現,因此這些方法可以在不同的地方被不同的類實現,而這些實現可以具有不同的行為(功能)。
『陸』 java調第三方介面超時會有影響嗎
java調第三方介面超時會有影響的。根據查詢相關公開信息顯示,java調第三方介面超時會會導致這個事務的連接一直阻塞,產生交叉死鎖。Java是一門面向對象編程語言,1990年代初由詹姆斯·高斯林等人開發出Java語言的雛形,最初被命名為Oak,後隨著互聯網的發展,經過對Oak的改造,1995年5月Java正式發布。
『柒』 java連接redis超時問題怎麼解決
應該是redis本身的服務有問題了
本文所針對的連接超時問題所涉及的相關元素如下:
Redis客戶端: Jedis (java)
Redis版本 :2.8.12
Redis部署操作系統類型:Linux
正文開始:
No 1.Redis執行大命令(時間復雜度為O(N)的命令)
問題剖析:
a.Redis伺服器端通過單線程處理命令,一旦有大命令被執行,Redis將無法及時響應來自客戶端的任何命令
關於Redis大命令的監控,可以查看slowlog來觀察
b.在使用jedis作為redis客戶端時,當redis連接池的配置參數testOnBorrow=true時,默認會在獲取redis連接
時,先執行redis的ping方法,而基於原因a,此時redis將無法及時響應,自然會報出time out異常
如何解決:
a.盡量避免使用時間復雜度為O(N)的命令
b.如果無法避免使用時間復雜度為O(N)的命令,則應降低其使用頻率,避免在業務高峰期時使用
No 2.Redis單次操作數據包過大
問題分析
a.單次操作數據包過大,且操作頻繁,極有可能會導致網路擁堵
b.在使用jedis作為redis客戶端時,當redis連接池的配置參數testOnBorrow=true時,默認會在獲取redis連接
時,先執行redis的ping方法,而基於原因a,此時redis將無法及時響應,自然會報出time out異常
如何解決:
a.排查代碼,確定是否存在大數據(數據條目過多/單條數據過大)操作,將其進行改造,改造方案有兩個:
a1.數據拆分,變更數據類型(常見的情況是將java中的collection類型序列化後存入redis的String數據
類型中),如將String數據類型調整為hash/list/set等,這常用於解決單條數據量過大的情況
a2.調整業務邏輯,減少單次數據查詢范圍(常見的情況如將redis中的整個hash數據取回,在應用程序內存中獲取需要的entry),如使用hget等單條查詢命令替換hgetall命令
『捌』 北大青鳥java培訓:在Java程序中處理資料庫超時與死鎖
每個使用關系型資料庫的程序都可能遇到數據死鎖或不可用的情況,而這些情況需要在代碼中編程來解決;本文主要介紹與資料庫事務死鎖等情況相關的重試邏輯概念,此外,還會探討如何避免死鎖等問題,文章以DB2(版本9)與為例進行講解。
什麼是資料庫鎖定與死鎖鎖定(Locking)發生在當一個事務獲得對某一資源的「鎖」時,這時,其他的事務就不能更改這個資源了,這種機制的存在是為了保證數據一致性;在設計與資料庫交互的程序時,必須處理鎖與資源不可用的情況。
鎖定是個比較復雜的概念,仔細說起來可能又需要一大篇,所以在本文中,只把鎖定看作是一個臨時事件,這意味著如果一個資源被鎖定,它總會在以後某個時間被釋放。
而死鎖發生在當多個進程訪問同一資料庫時,其中每個進程擁有的鎖都是其他進程所需的,由此造成每個進程都無法繼續下去。
如何避免鎖我們可利用事務型資料庫中的隔離級別機制來避免鎖的創建,正確地使用隔離級別可使程序處理更多的並發事件(如允許多個用戶訪問數據),還能預防像丟失修改(LostUpdate)、讀「臟」數據(DirtyRead)、不可重復讀(NonrepeatableRead)及「虛」(Phantom)等問題。
隔離級別問題現象丟失修改讀「臟」數據不可重復讀「虛」可重復讀取NoNoNoNo讀取穩定性NoNoNoYes游標穩定性NoNoYesYes未提交的讀NoYesYesYes表1:DB2的隔離級別與其對應的問題現象在只讀模式中,就可以防止鎖定發生,而不用那些未提交只讀隔離級別的含糊語句。
浙江電腦培訓http://www.kmbdqn.cn/發現一條SQL語句當使用了下列命令之一時,就應該考慮只讀模式了
『玖』 java題目運行超時是怎麼回事
首先確保沒有加package,類名稱為Main。
為了運行效率,請使用
[java]view plain
因為pat系統對scanner支持不友好且運行時間長。
BufferedReaderbf=newBufferedReader(newInputStreamReader(System.in));
請在使用完bufferedreader之後立刻使用close();方法關閉,否則可能會發生內存泄漏(關閉的越早越好)。
【重要】請不要隨便import沒有用到的包,親測若是導入了java.util.Scanner可是你沒有用到scanner,就會返回非零。
二、對於運行超時
一般對於100ms時間限制的題目,基本ac不了,哪怕優化得再好。因為很多乙級題目運行時長(該死的jvm啟動)在100ms上下,運氣好ac的多,運氣差全超時!
200ms以上的題目,若是運行超時,那就請不要用暴力破解。
還是超時的話,建議換語言。官方說明:選擇合適的語言也是一種技巧,所以不給你java放寬時間限制!
『拾』 java項目頁面為什麼會超時
session超時?因為客戶端沒有發起請求。時間超過默認session超時時間