⑴ java中同步和非同步有什麼異同
Java中交互方式分為同步和非同步兩種:
相同的地方:
都屬於交互方式,都是發送請求。
不同的地方:
同步交互:指發送一個請求,需要等待返回,然後才能夠發送下一個請求,有個等待過程;
非同步交互:指發送一個請求,不需要等待返回,隨時可以再發送下一個請求,即不需要等待。區別:一個需要等待,一個不需要等待,在部分情況下,我們的項目開發中都會優先選擇不需要等待的非同步交互方式。
(1)web同步與非同步交互擴展閱讀:
Java,是由Sun Microsystems公司於1995年5月推出的Java程序設計語言和Java平台的總稱。用Java實現的HotJava瀏覽器(支持Java applet)顯示了Java的魅力:跨平台、動態的Web、Internet計算。從此,Java被廣泛接受並推動了Web的迅速發展,常用的瀏覽器現均支持Java applet
Java是一種簡單的,面向對象的,分布式的,解釋型的,健壯安全的,結構中立的,可移植的,性能優異、多線程的動態語言。
當1995年SUN推出Java語言之後,全世界的目光都被這個神奇的語言所吸引。那麼Java到底有何神奇之處呢?
Java語言其實最早誕生於1991年,起初被稱為OAK語言,是SUN公司為一些消費性電子產品而設計的一個通用環境。他們最初的目的只是為了開發一種獨立於平台的軟體技術,而且在網路出現之前,OAK可以說是默默無聞,甚至差點夭折。但是,網路的出現改變了OAK的命運。
參考資料:java基礎 網路
⑵ Web前端面試指導(三十二):同步和非同步有什麼區別
同步就是發出請求後,等到伺服器返回結果,才繼續執行下一步,非同步則是不等伺服器返回,直接並行執行下一步,伺服器返回結果會通過處理回調函數執行
⑶ wkwebview與js交互非同步怎麼辦
//用一個對象保存oc返回來的鍵與值 var info = {}; //調用oc原生方法,(注意這是一個非同步調用) window.webkit.messageHandlers.getTicket.postMessage(null); //oc那邊收到通知成功後,會去執行js里的一個全局函數,並把前端JS需要的值以鍵值對的方式帶給前端 function getMessage(key, value) { console.log(`${key}=${value}`); info[key] = value; }。
交互(jiāo hù),漢語詞語,意為:互相;彼此。在互聯網中,當計算機播放某多媒體程序的時候,編程人員可以發出指令控制該程序的運行,而不是程序單方面執行下去,程序在接受到編程人員相應的指令後而相應地做出反應,這一過程及行為,我們稱之為交互。
⑷ WEB同步交互過程和非同步交互過程的區別
同步交互,就是最常見的click-refresh模式,點一個連接或提交一個表單,然後整個頁面被刷新
非同步交互,當前很熱的AJAX就是典型例子,提交請求返回對象是不可見的層,然後用javascripts根據返回數據,改變當前頁面顯示,譬如google map
⑸ 幫忙舉兩個例子 關於同步和非同步兩個不同概念的例子(java web或者Ajax提交)...不是很理解這兩層意思。
同步: 你去超市結賬,只有一個收銀口,那麼所有來結賬的人就要按先後順序排好,前面的結完了,下一個才能結賬。
非同步: 同樣是超市購入,如果超市有足夠多的收銀出口,那麼每一個結賬的只要找一個空著的收銀出口去結賬就好了,不用等待別人。
⑹ .net中webservice是同步調用還是非同步調用
WebService
其實非同步調用WebService是不需要在WebService中做任何操作的,只是普通的WebService就可以了,下面是我寫的一個簡單的WebService返回SqlServer2000中NorthWind資料庫中所有員工的信息
[WebMethod]
public DLL.EmployeesDataTable getEmployee()
{
DLL.EmployeesDataTable result = new DLL.EmployeesDataTable();
DLLTableAdapters.EmployeesTableAdapter eta = new WebServiceAsyn.DLLTableAdapters.EmployeesTableAdapter();
eta.FillEmployee(result);
return result;
} 這里我需要聲明一下,返回的 DLL.EmployeesDataTable類型是我用DataSet生成的強類型,或者你可以認為他是DataTable。
如何在Asp.Net里引入WebService呢?首先右鍵單擊解決方案資源管理器中的項目,然後選擇添加Web引用(你也可以單擊網站菜單選擇添加Web引用),在彈出的對話框中填入WebService的地址,並填寫Web引用名後點擊添加引用按鈕就可以了,這時我們就可以在代碼視圖中根據web引用名來對WebService進行調用了,下面是我的CS代碼
//實體化WebService引用
private AsynWebService.Service1 asynSer;
//構造函數初始化WebService引用,並為非同步調用WebService設置好了結果處理函數【方法名Completed】(先這么叫吧,我也不知道怎麼叫)
public _Default()
{
asynSer = new AsynWebService.Service1();
asynSer.HelloWorldCompleted += new AsynWebService.(asynSer_HelloWorldCompleted);
asynSer.getEmployeeCompleted += new AsynWebService.(asynSer_getEmployeeCompleted);
}
protected void Button1_Click(object sender, EventArgs e)
{
//開始非同步調用HelloWorld;
asynSer.HelloWorldAsync();
}
protected void asynSer_HelloWorldCompleted(object sender, AsynWebService.HelloWorldCompletedEventArgs e)
{
this.Label1.Text = e.Result.ToString();
}
protected void asynSer_getEmployeeCompleted(object sender, AsynWebService.getEmployeeCompletedEventArgs e)
{
this.GridView1.DataSource = e.Result;
this.GridView1.DataBind();
}
protected void Button2_Click(object sender, EventArgs e)
{
//開始非同步調用getEmployee
asynSer.getEmployeeAsync();
} 到這里我們後台代碼就寫完了,但是我們還要在ASPX頁面設置一個允許非同步調用的屬性 Async="true"這樣就可以在這個頁面里進行非同步調用了!
同步調用的方法和非同步調用的方法不一樣,非同步調用的方法是WebServic的方法名+Async()作為方法名,同步調用的方法就是WebService的方法名。
其實從原理上看不管是Ajax還是Asp.Net或者Flex它們的非同步調用都是一樣的,下面我們來和Ajax比較一下Ajax中的核心對象--XMLHttpRequest對象一個非常重要的屬性就是onreadystatechange,下面是一個基於Ajax的簡單的用戶名的驗證<script language="javascript" type="text/javascript">
var xmlHttp;
function createXMLHttpRequest()
{
if(window.ActiveXObject)
{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else if(window.XMLHttpRequest)
{
xmlHttp = new XMLHttpRequest();
}
}
function requestStart()
{
if(document.getElementById("tbx1").value.length <= 4)
{
alert("用戶名的長度要求大於4個字元!");
return false;
}
document.getElementById("sp1").innerText = "Loding";
var url = "default.aspx?userName=" + document.getElementById("tbx1").value;
createXMLHttpRequest();//創建XMLHttpRequest對象
xmlHttp.onreadystatechange = callBack;//為XMLHttpRequest對象指定結果處理函數
xmlHttp.open("GET",url);//打開鏈接
xmlHttp.send(null);//發送請求
}
//結果處理函數
function callBack()
{
if(xmlHttp.readyState == 4)
{
document.getElementById("sp1").innerText = xmlHttp.responseText;
}
}
</script>
⑺ 如何非同步調用webservice,非同步調用有什麼優勢
一.非同步調用webservice方法:
不管是Winform還是Web調用,都是可以對Webservice進行非同步調用的。
方法有兩種:
(1)Begin/End方法(雖然被丟棄)。
(2)事件驅動方法。
下面來具體談談這兩種方法;
1、Begin/End方法
使用 Begin/End 模式實現進行非同步方法調用的 Web 服務客戶端
客戶端如何知道何時調用 End 方法呢?根據 .NET Framework 的定義,有兩種方法可以使客戶端確定這一點:
客戶端調用方式1等待方法:使用 WaitHandle 類的方法之一使客戶端等待方法完成。
客戶端調用方式2回調方法:向 Begin 方法傳遞一個回調函數,在該方法完成處理後再調用該函數來檢索結果。
注意:無論客戶端選擇兩種方法中的哪一種與 Web 服務進行非同步通信,收發的 SOAP 消息都與通過同步代理方法生成的 SOAP 消息相同。也就是說,仍然只有一個 SOAP 請求和 SOAP 響應通過網路發送和接收。代理類通過使用與客戶端調用 Begin 方法時使用的線程不同的線程來處理 SOAP 響應,從而實現該目的。因此,在代理類接收和處理 SOAP 響應時,客戶端可以在其線程上繼續執行其他工作。
webservice代碼:
二.非同步調用的優勢:
非同步出來的新線程,.NET也是不允許的,所以別想鑽空子,下面可以很容易想到,回收分為2種情況:主動回收和被動回收,主動回收就是,去監視那個線程,並且等待,當非同步方法完成了,就把非同步線程回收,焦點回歸主線程,BeginInvoke之後又EndInvoke,如果在EndInvoke的時候,該非同步線程沒有完成操作,那麼整個程序,包括主線程,又在阻塞了,又會出現界面的情況。要想解決這個問題,就使用「被動回收」方式,其中一個重要的辦法就是「非同步回調」。 核心有二: A、 用回調函數,非同步結束後,自動調用此回調函數。 B、 而不在主線程中手工等待非同步結束,如上兩例中在主線程中調用EndInvoke。此種方法,是在回調函數中調用EndInvoke的。
⑻ 什麼叫網路交互工具還有什麼叫同步和非同步交互工具
網路交互工具簡單說就是利用網路進行交流和溝通的軟體平台,比如E-mail,Blog,Wiki,QQ; 同步和非同步是根據交互時間特徵區別的,同步就是交互雙方可以通過該工具軟體進行實時交流,即二者同時在線,同時交流,不存在時間差,比如QQ;非同步就是該軟體不支持交互雙方同時在線交流,交流具有時間差,比如E-mail。
⑼ 請問誰知道Web程序的同步和非同步提交有啥區別啊,分別在什麼情況下使用
通俗一點:
同步提交就是在提交的過程中你網頁不能做事,要等提交的結果完成後才能繼續;
非同步提交就是你提交的過程中仍然可以進行其他操作,而不用等待返回結果。