1. java如何多線程並發執行
如果不是必須要等到check返回結果的話,可以採用非同步編碼的方式,具體思路:在代碼中新起一個線程讓他執行check的代碼即可。
2. 如何理解應用 Java 多線程與並發編程
1. 如果不是沒有採用多線程, 不同用戶請求訪問,應該是先執行A用戶的請求,請求完畢後再處理B的請求,以此類推....
2. 點擊A按鈕,點擊B按鈕;這就是分屬於不同的兩個處理過程;
3.web本身就是一個多線程機制,不需要你自己去實現。。。;同時下載,比如有10個人在下載文件,肯定是服務端有10個線程在執行呢
3. java怎麼實現並發編程
利用多線程就可以,處理好同步或非同步的關系,非同步的話,設置好回調,同步的話,syncronized一下
4. 為什麼要學習 Java 並發編程
並發編程又叫多線程編程。
在程序中,往往有很多很耗時的工作,比如上傳文件、下載文件、跟客戶聊天需要長時間建立連接。這種時候,一個線程是服務不了多個用戶的,會產生因為資源獨占產生的等待問題。
5. java 多線程問題 真的提高了效率嗎
你鑽了牛角尖了。不要從cpu耗時上看,並行一般是為了任務處理。並發是為了資源共享和資源的充分利用。二者可比性不大。
你所說的cpu一般是指,分時系統中的cpu,比如linux,其中一個用戶A的一個線程要30個小時完成,另外一個用戶B的線程需要1000個小時。而且其中需要用戶不斷響應,如果沒有並發,B用戶先開始,A用戶需要等待1030小時。如果使用並發,A用戶可能四五十個小時就搞定了。如果A和B都比較有money,一人買一台,沒有這個問題的。這就是並行。資源充足怎麼著都行,資源不足只能找折中方案了。
如果你覺得這是進程的概念,java里一樣的。你做過web開發吧。你肯定不想每個請求都分一個伺服器吧。開發一個網頁,一台電腦同時有上千個人訪問你的tomcat,一般不會有問題。瀏覽也順暢。這就是並發的作用。這種情況如果使用單線程。一千個人有999個人等著看你的網頁,而第一個人操作的時候cpu大部分時間是空閑的。怎麼利用起來就成了個問題。這也叫效率。
如果確實必須要考慮問題處理的效率問題。你訪問資料庫的時候用過線程池嗎?是不是能縮短訪問資料庫所耗費的時間。所以效率高不高不能只看cpu用了多少時間。你可以再考慮考慮,不用多線程,你怎麼設計一個單線程程序,同時監聽鍵盤和麥克風的信息錄入?
其實計算機底層是有天然的非同步特性的。這個東西就是中斷。有些耗時的io操作,什麼時候處理完是可以不用管的。剩下的無關線程就可以自由自在的進行了。這樣效率是不是也高了。
單cpu一般也是多核的。
6. 解釋一下java多線程中,並發和並行。
所謂進程(process)就是一塊包含了某些資源的內存區域。操作系統利用進程把它的工作劃分為一些功能單元。進程中所包含的一個或多個執行單元稱為線程(thread)。進程還擁有一個私有的虛擬地址空間,該空間僅能被它所包含的線程訪問。線程只能歸屬於一個進程並且它只能訪問該進程所擁有的資源。當操作系統創建一個進程後,該進程會自動申請一個名為主線程或首要線程的線程。
進程並不是真正意義上的同時運行,而是並發運行。
一個進程至少有一個線程。線程的劃分尺度小於進程,使得多線程程序的並發性高。另外,進程在執行過程中擁有獨立的內存單元,而多個線程共享內存,從而極大地提高了程序的運行效率。
線程在執行過程中與進程的區別在於每個獨立的線程有一個程序運行的入口、順序執行序列和程序的出口。但是線程不能夠獨立執行,必須依存在應用程序中,由應用程序提供多個線程執行控制。
從邏輯角度來看,多線程的意義在於一個應用程序中,有多個執行部分可以同時執行。但操作系統並沒有將多個線程看做多個獨立的應用來實現進程的調度和管理以及資源分配。
多個線程或進程」同時」運行只是感官上的一種表現。事實上進程和線程是並發運行的,OS的線程調度機制將時間劃分為很多時間片段(時間片),盡可能均勻分配給正在運行的程序,獲取CPU時間片的線程或進程得以被執行,其他則等待。而CPU則在這些進程或線程上來回切換運行。微觀上所有進程和線程是走走停停的,宏觀上都在運行,這種都運行的現象叫並發,但是不是絕對意義上的「同時發生。
7. java 程序中怎麼保證多線程的運行安全
並發編程三要素(線程的安全性問題體現在):
原子性:原子,即一個不可再被分割的顆粒。原子性指的是一個或多個操作要麼 全部執行成功要麼全部執行失敗。
可見性:一個線程對共享變數的修改,另一個線程能夠立刻看到。 (synchronized,volatile)
有序性:程序執行的順序按照代碼的先後順序執行。(處理器可能會對指令進行 重排序)
出現線程安全問題的原因:
線程切換帶來的原子性問題
緩存導致的可見性問題
編譯優化帶來的有序性問題
解決辦法:
JDK Atomic開頭的原子類、synchronized、LOCK,可以解決原子性問題
synchronized、volatile、LOCK,可以解決可見性問題
Happens-Before 規則可以解決有序性問題
8. java學習java並發編程是啥子意思
一般來說,在java中實現高並發是基於多線程編程的,所謂並發,也就是多個線程同時工作,來處理我們的業務,在機器普遍多核心的今天,並發編程的意義極為重大,因為我們有多個cpu供線程使用,如果我們的應用依然只使用單線程模式來工作的話,是極度浪費機器資源的。而多線程並發編程就很好的解決了這個問題。
9. Java並發編程(二)為什麼需要多線程
*使用線程可以把占據時間長的程序中的任務放到後台去處理
*程序的運行速度可能加快
*在一些等待的任務實現上如用戶輸入、文件讀寫和網路收發數據等,線程就比較有用了。在這種情況下可以釋放一些珍貴的資源如內存佔用等等。
*多線程技術在IOS軟體開發中也有舉足輕重的位置。
10. 如何學習Java高並發
1.學習集合並發框架的使用,如ConcurrentHashMAP,CopyOnWriteArrayList/Set等
2.幾種並發鎖的使用以及線程同步與互斥,如ReentainLock,synchronized,Lock,CountDownLatch,Semaphore等
3.線程池如Executors,ThreadPoolExecutor等
4.Runable,Callable,RescureTask,Future,FutureTask等
5.Fork-Join框架
以上基本包含完了,如有缺漏請原諒