java 線程什么時候結束_java線程什么時候讓出cpu?

Thread.sleep();

sleep就是正在執行的線程主動讓出cpu,cpu去執行其他線程,在sleep指定的時間過后,cpu才會回到這個線程上繼續往下執行,如果當前線程進入了同步鎖,sleep方法并不會釋放鎖,即使當前線程使用sleep方法讓出了cpu,但其他被同步鎖擋住了的線程也無法得到執行。

在多線程爭用的情況,擁有鎖的線程進行一些耗時操作,會極大降低吞吐量(amdahl定律),如果在同步塊中使用sleep就是一種糟糕的做法,它不會釋放鎖卻阻止其他線程獲得鎖。

2. Thread.yield();

yeild是個native靜態方法,這個方法是想把自己占有的cpu時間釋放掉,然后和其他線程一起競爭(注意yeild的線程還是有可能爭奪到cpu,注意與sleep區別)。在javadoc中也說明了,yeild是個基本不會用到的方法,一般在debug和test中使用。

3. Object.wait();

wait會把當前的鎖釋放掉同時阻塞住,讓出CPU;當別的線程調用該 Object 的 notify/notifyAll 之后,有可能得到 CPU,同時重新獲得鎖。

當然同樣的condition.await();

也會釋放鎖并且讓出CPU;

當然很多競爭鎖失敗的線程最終也會阻塞住,但是這不是主動讓出CPU,不在討論范圍內。

4. Thread.stop();

太過暴力,不推薦使用,同時會釋放所有鎖。容易導致數據不一致,具體請查看[高并發Java 二] 多線程基礎

5. Thread.currentThread().suspend();

掛起線程,suspend不會釋放鎖,suspend容易發生死鎖,不推薦使用。原因請查看[高并發Java 二] 多線程基礎

6. LockSupport.park();

與suspend一樣掛起線程,但是park/unpark不會發生死鎖,原因請查看[高并發Java 五] JDK并發包1

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/371715.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/371715.shtml
英文地址,請注明出處:http://en.pswp.cn/news/371715.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Hibernate配置方式

Hibernate配置方式 Hibernate給人的感受是靈活的&#xff0c;要達到同一個目的&#xff0c;我們可以使用幾種不同的辦法。就拿Hibernate配置來說&#xff0c;常用的有如下三種方式&#xff0c;任選其一。 在 hibernate.cfg.xml 中加入元素 <property>、<mapping>&a…

js中 javascript:void(0) 用法詳解

javascript:void(0)表示不做任何動作。如&#xff1a; 復制代碼代碼如下:<a href"javascript:void(0);" οnclick"alert(ok);"></a> 這里表示這個鏈接不做跳轉動作&#xff0c;執行onClick事件。 我想使用過ajax的都常見這樣的代碼&#xff1…

帶有ActiveMQ的JMS

帶有ActiveMQ的JMS JMS是Java Message Service的縮寫&#xff0c;它提供了一種以松散耦合&#xff0c;靈活的方式集成應用程序的機制。 JMS以存儲和轉發的方式跨應用程序異步傳遞數據。 應用程序通過充當中介的MOM&#xff08;面向消息的中間件&#xff09;進行通信&#xff0c…

矩陣分解 java_使用矩陣分解為推薦系統

矩陣分解假設“潛在因素”&#xff0c;例如對用戶的意大利食物的偏好和項目食物的意外性與矩陣中的評級有關 .因此&#xff0c;整個問題類型轉變為矩陣重構問題&#xff0c;存在許多不同的解決方案 . 一個簡單的&#xff0c;可能很慢的解決方案是(除了ALS和其他一些矩陣重建的可…

用戶故事排球教練助手

計劃&#xff1a;估計這個任務需要一周時間 需求分析&#xff1a;作為一名排球教練助手&#xff0c;我需要了解每場每位隊員的技術動作&#xff0c;每場比賽每位隊員的得分情況&#xff0c;以便教練更好的了解到每位隊員的發揮情況和特長。 設計文檔&#xff1a;用戶進入此界面…

TMS320DM642學習----第一篇(硬件連接)

DSP設備型號&#xff1a;SEED-DTK-VPM642&#xff08;目前實驗室用途&#xff1a;視頻處理&#xff0c;圖像處理方向&#xff0c;預計搭載目標跟蹤以及云臺防抖等算法&#xff09; 官網鏈接&#xff1a;http://www.seeddsp.com/index.php/Home/Product/detail/name/1/id/174.ht…

字符串內存內部

本文基于我對StackOverflow的回答 。 我正在嘗試解釋String類如何存儲文本&#xff0c;內部存儲和常量池如何工作。 這里要理解的要點是String Java對象與其內容– private value字段下的char[]之間的區別。 String基本上是char[]數組的包裝器&#xff0c;將其封裝并使其無法修…

關于inline-block 元素之間為何會產生間隔

關于inline-block 元素之間為何會產生間隔 現象&#xff1a; <body><input type"text"><input type"text"> </body> 在瀏覽器中的表現&#xff1a; 實時上不僅僅是 inline-block 會導致這種現象。 inline 也會導致。 那問題來了&a…

java 入參 是 枚舉_java 枚舉 參數傳遞

展開全部這樣做是不行的&#xff0c;原因是&#xff1a;Java中的對象實例化都是在堆中&#xff0c;如果是普通的類實例變量&#xff0c;比如在方法636f707962616964757a686964616f313333376166371中定義的普通類實例變量&#xff0c;傳到了方法2中&#xff0c;由于方法1和方法2…

loadView的使用總結

一、loadView 1. loadView什么時候被調用&#xff1f; 每次訪問UIViewController的view&#xff08;如 controller.view、self.view&#xff09;并且view為nil&#xff0c;loadView方法就會被調用 2. 有什么作用 loadView 方法是用來負責創建UIViewController的view 3. 默認實…

數據庫備份 java jar_Java實現數據庫備份并利用ant導入SQL腳本

?數據備份對于經常在運維部署方面的工作者來說&#xff0c;是一件相對簡單的事情&#xff0c;都可以通過某一個SQL工具進行備份&#xff0c;但是如果在項目運行當中&#xff0c;我們需要對數據進行實時&#xff0c;或者是每隔一星期&#xff0c;一個月&#xff0c;等等進行數據…

JSF簡單Ajax示例

今天&#xff0c;我們將看到一些使用JSF的Ajax簡單樣本。 如果要查看有關JSF / Web應用程序的其他文章&#xff0c;請單擊以下鏈接&#xff1a; 重定向后的JSF持久化對象和消息 &#xff0c; 使用JAAS和JSF進行用戶登錄驗證 &#xff0c; JSF&#xff1a;Converter and Bean Au…

常用的好用的window工具

1. FastStone Capture截圖錄屏軟件 百度軟件中心&#xff1a;http://rj.baidu.com/soft/detail/13504.html?ald 注冊企業版&#xff1a; 用戶名&#xff1a;c1ikm 注冊碼&#xff1a;AXMQX-RMMMJ-DBHHF-WIHTV 中文輸入亂碼解決方法&#xff1a; 2. Notepad文本編輯器&#xff…

表分區

http://www.cnblogs.com/leestar54/p/6225821.html轉載于:https://www.cnblogs.com/jouny/p/6262850.html

java飛鴿傳書_feige 飛鴿傳書源代碼java 實現不錯的聯系網絡編程的資料飛鴿傳書的GUI(java實現) - 下載 - 搜珍網...

我的飛鴿傳書/FileFilter.java我的飛鴿傳書/FileNameExtensionFilter.java我的飛鴿傳書/飛鴿傳書/classes/feige/About.class我的飛鴿傳書/飛鴿傳書/classes/feige/ConnectOthers$ReadMessageThread.class我的飛鴿傳書/飛鴿傳書/classes/feige/ConnectOthers.class我的飛鴿傳書…

JAXB和根元素

XmlRootElement是人們習慣于與JAXB&#xff08;JSR-222&#xff09;一起使用的注釋。 目的是將根元素與類唯一關聯。 由于JAXB類映射到復雜類型&#xff0c;因此一個類有可能對應于多個根元素。 在這種情況下&#xff0c;無法使用XmlRootElement &#xff0c;人們開始感到有些困…

python socket模塊實現udp通信_Python基于socket模塊實現UDP通信功能示例

Python基于socket模塊實現UDP通信功能示例本文實例講述了Python基于socket模塊實現UDP通信功能。分享給大家供大家參考&#xff0c;具體如下&#xff1a;一 代碼1、接收端import socket#使用IPV4協議&#xff0c;使用UDP協議傳輸數據ssocket.socket(socket.AF_INET, socket.SOC…

Hibernate緩存基礎知識

最近&#xff0c;我嘗試了休眠緩存。 在這篇文章中&#xff0c;我想分享我的經驗&#xff0c;并指出Hibernate Second Level Cache的一些細節。 在此過程中&#xff0c;我將指導您閱讀一些有助于實現緩存的文章。 讓我們從地面開始。 在休眠狀態下緩存 緩存功能旨在減少必要的…

TP3.2之WHERE組合條件處理

1、條件都是int類型&#xff1a; $User->where(type1 AND status1)->select(); 2、條件包含字符串類型&#xff1a; 使用3.1以上版本的話&#xff0c;使用字符串條件的時候&#xff0c;建議配合預處理機制&#xff0c;確保更加安全&#xff0c; $Model->where("i…