1. 程式人生 > >js單執行緒與java多執行緒、同步與非同步

js單執行緒與java多執行緒、同步與非同步

       寫這篇部落格源於想對比一下單執行緒js和多執行緒java兩種語言的區別。

      定義區:

           單執行緒:只能執行一個任務,只有在完成執行後,才能繼續執行其他的任務。

           多執行緒:有多個執行緒,可以同時執行多個任務。

           同步:當傳送一個請求後,必須等待響應之後才能繼續執行後面的程式。

           非同步:但傳送一個請求後,可以不需要等待響應,可以直接執行後續的程式。

       js中如果觸發多個事件(事件驅動),那麼要按照事件順序逐個執行,這與java中多執行緒的各個單獨執行緒的執行情況是一致的,在js中值得一提的是Ajax 技術,這是個非同步方法,即在Ajax傳送一個請求之後,我可以繼續執行後面的程式,包括click等事件也是非同步的,直到響應後,再將callback放入等待佇列中。對於一整個Ajax來說,可以吧它當作是一個同步的,只有等請求得到響應之後,我才能執行Ajax的callback。

      java中如果有多個任務,可以將他們分配到不同的執行緒中去執行,實現併發,每個單獨執行緒中同步和非同步情況和js中單執行緒情況是一致的。但多執行緒就存在一個資源共享的問題,就關於執行緒安全的問題,這是另一個問題,不予贅述。