日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java crud事件回调_java回调机制 - 神是到着念的个人空间 - OSCHINA - 中文开源技术交流社区...

發布時間:2023/12/1 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java crud事件回调_java回调机制 - 神是到着念的个人空间 - OSCHINA - 中文开源技术交流社区... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

軟件模塊之間總是存在著一定的接口,從調用方式上,可以把他們分為三類:同步調用、回調和異步調用。同步調用是一種阻塞式調用,調用方要等待對方執行完畢才返回,它是一種單向調用;回調是一種雙向調用模式,也就是說,被調用方在接口被調用時也會調用對方的接口;異步調用是一種類似消息或事件的機制,不過它的調用方向剛好相反,接口的服務在收到某種訊息或發生某種事件時,會主動通知客戶方(即調用客戶方的接口)。回調和異步調用的關系非常緊密,通常我們使用回調來實現異步消息的注冊,通過異步調用來實現消息的通知。同步調用是三者當中最簡單的,而回調又常常是異步調用的基礎

回調你可以這樣來理解:

A發送消息給B,B處理好A要求的事情后,將結果返回給A,A再對B返回的結果來做進一步的處理。

A、回調的實現

/**

*?回調接口

*?@author?KOOK

*

*/

public?interface?CallBack?{

/**

*?執行回調方法

*?@param?objects將處理后的結果作為參數返回給回調方法

*/

public?void?execute(Object...?objects?);

}

B、消息的發送者

/**

*?簡單本地發送異步消息的類

*?@author?KOOK

*

*/

public?class?Local?implements?CallBack,Runnable{

/**

*?遠程接收消息的類,模擬point-to-point

*/

private?Remote?remote;

/**

*?發送出去的消息

*/

private?String?message;

public?Local(Remote?remote,?String?message)?{

super();

this.remote?=?remote;

this.message?=?message;

}

/**

*?發送消息

*/

public?void?sendMessage()

{

/**當前線程的名稱**/

System.out.println(Thread.currentThread().getName());

/**創建一個新的線程發送消息**/

Thread?thread?=?new?Thread(this);

thread.start();

/**當前線程繼續執行**/

System.out.println("Message?has?been?sent?by?Local~!");

}

/**

*?發送消息后的回調函數

*/

public?void?execute(Object...?objects?)?{

/**打印返回的消息**/

System.out.println(objects[0]);

/**打印發送消息的線程名稱**/

System.out.println(Thread.currentThread().getName());

/**中斷發送消息的線程**/

Thread.interrupted();

}

public?static?void?main(String[]?args)

{

Local?local?=?new?Local(new?Remote(),"Hello");

local.sendMessage();

}

public?void?run()?{

remote.executeMessage(message,?this);

}

}

C、遠程消息的接收者

/**

*?這個類相當于你的同學

*/

public?class?Remote?{

/**

*?處理消息

*?@param?msg???接收的消息

*?@param?callBack??回調函數處理類

*/

public?void?executeMessage(String?msg,CallBack?callBack)

{

/**模擬遠程類正在處理其他事情,可能需要花費許多時間**/

for(int?i=0;i<1000000000;i++)

{

}

/**處理完其他事情,現在來處理消息**/

System.out.println(msg);

System.out.println("I?hava?executed?the?message?by?Local");

/**執行回調**/

callBack.execute(new?String[]{"Nice?to?meet?you~!"});??//這相當于同學執行完之后打電話給你

}

}

回調的好處之一:摒棄了繼承抽象類方式的回調方式更加簡便靈活

public?abstract?class?B{

public?void?execute(){

getConnection();

doCRUD();

releaseConnection();

}

public?abstract?void?doCRUD();

public?void?getConnection(){

System.out.println("獲得連接...");

}

public?void?releaseConnection(){

System.out.println("釋放連接...");

}

}

public?class?A?extends?B{

public?void?doCRUD(){

System.out.println("執行add操作...");

}

public?void?add(){

doCRUD();

}

}

public?class?C?extends?B{

public?void?doCRUD(){

System.out.println("執行delete操作...");

}

public?void?delete(){

doCRUD();

}

}

如果改為回調實現是這樣的

interface?CallBack{

public?void?doCRUD();

}

public?class?HibernateTemplate?{

public?void?execute(CallBack?action){

getConnection();

action.doCRUD();

releaseConnection();

}

public?void?add(){

execute(new?CallBack(){

public?void?doCRUD(){

System.out.println("執行add操作...");

}

});

}

public?void?delete(){

execute(new?CallBack(){

public?void?doCRUD(){

System.out.println("執行delete操作...");

}

});

}

public?void?getConnection(){

System.out.println("獲得連接...");

}

public?void?releaseConnection(){

System.out.println("釋放連接...");

}

}

總結

以上是生活随笔為你收集整理的java crud事件回调_java回调机制 - 神是到着念的个人空间 - OSCHINA - 中文开源技术交流社区...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。