|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
关于第二点:俺问问你,如果是企业级项目的话,诸如RMI,EJB,等一些关键技术,这些难道都不需要学么?如果光是使用jsp,servlet,javabean的话。
如今程序中有很多触及长耗时呼应历程的处置,好比会见WebService,远程挪用,庞大处置等,假如我们利用间接按次实行的体例举行处置有大概招致界面停留,呼应中断,无谓守候等缺点,这是不该该的。
一个耗时呼应历程应当接纳回协调线程来处置,详细就是把本来的按次实行修正为异步体例,并让被挪用者挪用挪用者以取得实行了局。在附件的例子中,Viewer就是挪用者,它代表界面,而LongTimeResponse是被挪用者,它外部用线程启动一个耗时历程,实行终了再关照挪用者。
Viewer类代码以下:
publicclassViewer{
privateintcount;
publicViewer(intcount){
this.count=count;
}
publicvoidprintNewCount(intnewCount){
System.out.println("NewCount="+newCount);
}
publicintgetCount(){
returncount;
}
publicvoidsetCount(intcount){
this.count=count;
}
}LongTimeResponse类代码以下,能够看出,它之以是能回调挪用者,是由于其外部有挪用者的援用viewer,在其机关函数中viewer被赋上了值:
packagecom.sitinspring;
publicclassLongTimeResponseimplementsRunnable{
privateViewerviewer;
privateintcount;
publicLongTimeResponse(Viewerviewer){
this.viewer=viewer;
this.count=viewer.getCount();
caculateNewCount();
}
privatevoidcaculateNewCount(){
Threadthread=newThread(this);
thread.start();
}
publicvoidrun(){
try{
Thread.sleep(10000);
}
catch(Exceptionex){
ex.printStackTrace();
}
viewer.printNewCount(count*count*count);
}
}挪用历程以下:
Viewerviewer=newViewer(10);
LongTimeResponselongTimeResponse=newLongTimeResponse(viewer);
viewer.printNewCount(123);
实行起来能够看出,程序先输入了
NewCount=123
过了十秒,才输入:
NewCount=1000
这申明,程序是异步实行的,耗时历程没有影响到骨干程序的运转,而耗时历程完成后,才把前往了局关照了挪用者,骨干程序没有遭到耗时历程的影响,因而也就不会招致界面停留,呼应中断,无谓守候等缺点。
以上就是利用回协调线程处置一个耗时呼应的全部历程。
JAVA是一种可以撰写跨平台应用软件的面向对象的程序设计语言,由升阳(SunMicrosystems)公司的詹姆斯·高斯林(JamesGosling)等人于1990年代初开发。 |
|