1. 程式人生 > >JAVA控制CPU佔用率(程式設計之美有感)(二)

JAVA控制CPU佔用率(程式設計之美有感)(二)


JAVA控制CPU佔用率(程式設計之美有感)(二)

  繼續上次的電腦CPU控制,很遺憾更新的有點慢,雖然我知道沒人看,最近專案上任務有點多,所以時間少了點,不過我是達不到目的是不會放棄的!

  上次勉強能達到有點類似於直線的CPU佔用率控制圖,但是這只是所有CPU的平均工作,遠不能達到每個CPU都受我控制顯示一條直線的程式,這幾天沒寫部落格但是也想了挺多,我想既然我電腦是4個CPU,那我建立4個實體,每個實體都跑百分之五十呢?心痛不如行動,上程式碼:

public static void main(String[] args) throws InterruptedException {
		
		ComputeProcess th1= new ComputeProcess();
		ComputeProcess th2= new ComputeProcess();
		ComputeProcess th3= new ComputeProcess();
		ComputeProcess th4= new ComputeProcess();
		th2.runProcess();
		th3.runProcess();
		th4.runProcess();
		th1.runProcess();
		}
	}
private static void runProcess(){
	long busyTime = 5;
	Thread th = Thread.currentThread();
	long nowSys = System.currentTimeMillis();
	while (true) {
		nowSys = System.currentTimeMillis();
		while ((System.currentTimeMillis() - nowSys) <= busyTime) {
		}
	try {
		th.sleep(5);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
	}
}
  阿西吧,想那麼好但是沒什麼卵用啊!


  發了一會呆,突然想起來,我建立實體沒什麼卵用啊,並不影響CPU的工作啊啊啊啊,應該建立執行緒試試的啊~~果斷讓程式繼承了Thread類,並重寫了run方法,讓run去呼叫runProcess,不要問我為什麼不在run方法裡面寫,因為我懶!!!然後把所有的th_.runProcess()改成th_.start(),再看一下效果圖:


  哈哈哈啊哈哈哈哈哈哈哈哈哈哈哈!

  終於有希望了啊啊啊啊啊啊啊啊!

下面就是考慮要控制計算機的記憶體了,這樣只是自己手動配置busy和idle比率為50%但是系統本身就會執行好多記憶體,所以這個比例一直會大於50.從網上搜了一下可以使用sigar進行檢視系統的資訊:

   使用sigar來監控,簡單方便!
   使用說明:以下程式碼需要配合sigar的dll檔案來用,需要將dll檔案放到JDK下的bin資料夾下。

   原文:點選開啟連結。原文中沒有sigar下載地址,不過有需要的話可以私信或者發郵件給我我給你發[email protected]

   下面是使用siger的控制檯得到的資訊:


相關推薦

JAVA控制CPU用率程式設計有感

JAVA控制CPU佔用率(程式設計之美有感)(二)   繼續上次的電腦CPU控制,很遺憾更新的有點慢,雖然我知道沒人看,最近專案上任務有點多,所以時間少了點,不過我是達不到目的是不會放棄的!   上次勉強能達到有點類似於直線的CPU佔用率控制圖,但是這只是所有CP

【轉】Linux下java程序CPU用率高分析方法

文章轉載的地址: https://blog.linuxeye.cn/343.html   在工作當中,肯定會遇到由程式碼所導致的高CPU耗用以及記憶體溢位的情況。這種情況發生時,我們怎麼去找出原因並解決。 一般解決方法是通過top命令找出消耗資源高的執行緒id,利用strace命令檢視該執行緒

Java獲取CPU用率

原文連結:https://www.jianshu.com/p/015cc4805e29 最近做一個Java效能統計的問題,需要統計當前程序佔用CPU的情況,最開始使用Java MxBean來獲取 OperatingSystemMXBean osMxBean = ManagementFactory

Java 獲取 CPU 用率

轉自:https://www.jianshu.com/p/015cc4805e29 最近做一個Java效能統計的問題,需要統計當前程序佔用CPU的情況,最開始使用Java MxBean來獲取: OperatingSystemMXBean osMxBean = ManagementFactor

JAVA併發:多執行緒程式設計同步“監視器monitor”

在JAVA虛擬機器中,每個物件(Object和class)通過某種邏輯關聯監視器,為了實現監視器的互斥功能,每個物件(Object和class)都關聯著一個鎖(有時也叫“互斥量”),這個鎖在作業系統書籍中稱為“訊號量”,互斥(“mutex”)是一個二進位制的訊號量。 如果一個執行緒擁有了某些資料的鎖,其他的

字串移位包含的問題程式設計

 問題:給定兩個字串s1和s2,要求判斷s2是否能夠被通過s1做迴圈移位(rotate)得到的字串包含。例如,S1=AABCD和s2=CDAA,返回true;給定s1=ABCD和s2=ACBD,返回false。 我們也可以對迴圈移位之後的結果進行分析。 以S1 = A

階乘的一些規律程式設計

問題一: N!末尾有多少個0? 問題二: N!二進位制表示中最低位1的位置? 首先來介紹幾個要點和規律: n! = n(n - 1)!    (n > 0)  n! = 1 (n = 0)   這裡注意不要忘了 問題一等價轉化 <=> N! 的質因數

java獲取JVM的CPU用率、記憶體用率、執行緒數及伺服器的網口吞吐率、磁碟讀寫速率

怎麼說呢,本人菜鳥一枚,費了幾天時間,終於做了一個用java獲取JVM的CPU佔用率、記憶體佔用率、執行緒數及伺服器的網口吞吐率、磁碟讀寫速率的實現。 其中windows環境下獲取jvm 的cpu佔用率這裡是參考網上別人的東西(在此感謝提供參考的網友),其他的都是基於自己的想法做出來的。該工具類

程式設計小飛的電梯排程演算法多種解法---Java語言

1.題目情景         我們假設都是從一樓上電梯的,而至於訊電梯停在其中的某一層。即所有的乘客都從一樓上電梯,到達某層之後,電梯停下來,所有乘客再從這裡爬樓梯到自己的目的層。在一樓的時候,每個乘客選擇自己的目的層,電梯則自動計算出應停的樓層,並且能夠保證該層停使得所有

線上Java程式導致伺服器CPU用率過高的問題排除過程

1、故障現象 客服同事反饋平臺系統執行緩慢,網頁卡頓嚴重,多次重啟系統後問題依然存在,使用top命令檢視伺服器情況,發現CPU佔用率過高。 2、CPU佔用過高問題定位 2.1、定位問題程序 使用top命令檢視資源佔用情況,發現pid為14063的程序佔用了大量的CPU

java程式設計計算圓球體積從命令窗輸入資料

/* *已知圓球體積為4/3πr3,試編寫一個程式,輸入圓球半徑,經過計算輸出圓球的體積。 *從命令窗輸入 */ import java.util.Scanner; class volume{

Java web程式設計基礎理論詳解計算機網路基礎,HTTP請求的完成過程

1.計算機網路基礎知識 首先我們需明確通訊系統互聯參考模型: OSI/RM模型與TCP/IP模型:                  OSI/RM模型是一種事實上被TCP/IP模型淘汰的模型,在當今世界上沒有大規模使用。當發生HTTP請求時,傳送方傳送的資料是由最頂

如何定位cpu用率高的java執行緒

檢視cup的使用情況,在Linux下可以使用 top 或者 htop命令 top -u ${使用者} -c top -u devops -c 在命令列提示符執行top命令,輸入大寫P,

網路故障DHCP廣播風暴------運維上看交換機的CPU用率100%

1.廣播幀的格式是怎樣的???目的MAC  是什麼??? 2.交換機是如何處理廣播幀的???向所有埠轉發。 3.廣播幀所帶來的壞處是什麼???廣播幾乎佔用了子網內網路的所有頻寬。網路中不能長時間出現大量的 廣播幀否則就會出現所謂的“廣播風暴”每秒的廣播幀數在1000以上

java&android執行緒池-Executor框架ThreadPoolExcutor&ScheduledThreadPoolExecutor淺析多執行緒程式設計

java多執行緒-概念&建立啟動&中斷&守護執行緒&優先順序&執行緒狀態(多執行緒程式設計之一)java多執行緒同步以及執行緒間通訊詳解&消費者生產者模式&死鎖&Thread.join()(多執行緒程式設計之二)

C++程式設計中,利用WINDOWS API獲得系統狀態資訊[CPU用率,硬碟使用情況,記憶體使用情況]

#include <Ice/Ice.h> #include <iostream> #include <GetWinSysState.h> #include <Winbase.h> #include <conio.h>

minerd和wnTKYg程序病毒--被攻擊CPU用率達到100%

今天登入伺服器感覺伺服器特別的慢。結果檢視發現有兩個程序佔用CPU100%了,一個是minerd一個是wnTKYg。如果大家遇到請小心。 檢視伺服器各個程式佔用資源量 [root@iZ2z

降低指定程序的CPU用率適合遊戲多開

應用場景舉例 遊戲多開,比如《天書世界》網頁遊戲,單開佔用CPU30%左右;最小化能夠降低到10%以下。 如果多開,那麼CPU就是疊加累計,非常佔用CPU資源,而且掛機嚴重影響CPU溫度。

Java併發程式設計執行緒管理基本執行緒同步3

 (上一節的繼續) 2.2 使用Lock機制         Java提供了另外一種機制來同步程式碼塊。它是比synchrozied關鍵字更為強大且彈性的機制。它是基於鎖介面和實現了這個介面的類

Java併發程式設計執行緒管理高階執行緒同步7

3執行緒同步實用程式 在這一節中,我們將討論如何使用高級別機制去獲得多執行緒的同步(synchronized)。這些高級別機制有下面幾種: Ø  訊號(Semaphores):一個訊號就是一個計數