導航:首頁 > 編程語言 > java多線程之間統計數量

java多線程之間統計數量

發布時間:2024-03-26 11:27:04

A. java用多線程實現累加求和

class Thread_test extends Thread
{
int number;
public static int sum;
public Thread_test(int n) //構造函數
{
number=n;
}
public static synchronized void add(int num){ //同步方法
sum += num;
}
public void run()
{
int count=0;
for(int i=0;i<10;i++)
{
count+=number+i;
}
System.out.println("The "+((int)number/10+1)+" time: "+count);
add(count);
}

}
public class Main{
public static void main(String args[]) {
Thread_test test[] = new Thread_test[10];
for (int i = 0; i < 10; i++) {
test[i] = new Thread_test(i*10+1);
test[i].start();
try {
test[i].join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("Total is "+Thread_test.sum);
}

}

B. 如何在c盤中查看java線程數

Windows
通過任務管理器查看進程信息
在進程頁簽中查看Java進程,我是idea啟動,因此可以在idea下查看相關進程


此外可以在詳細信息頁簽下Ctrl+f搜索java


通過控制台查看進程信息
進入CMD,鍵入tasklist,可以查看所有的進程信息,包括進程ID、內存使用情況


查看Java相關的進程,可以添加過濾條件 tasklist | findstr "java" ,需要注意windows中字元串需要使用雙引號,要不就不加也是可以的


如果是在IDEA中啟動程序,可以借用idea的Terminal終端執行命令


taskkill 殺死進程
殺死進程使用taskkill /pid 指定進程id,如果無法殺死,可以嘗試強制殺死taskkill /pid 進程id -t -f


可以看到idea控制台中進程已結束


通過tasklist | findstr 進程id 已經無法查詢到該進程,說明進程終止成功

C. java 多線程 求和

幫你幫到底,你湊合著看看吧

package test;

import java.io.*;

class testthread
extends Thread {
int b[] = null;
public testthread(int[] a) {
b = a;
}

public void run() {
int sum = 0;
for (int i = 0; i < b.length; i++) {
sum = sum + b[i];
}
System.out.println(sum);
thread.tnumInc(sum);
}
}

public class thread {
private static int ready = 0;
private static int tnum = 0;
private static int SUM = 0;
static synchronized void tnumInc(int p)
{
ready++;
SUM += p;
if(ready>=tnum){
System.out.println(SUM);
}
}
/**
* @param args
*/
public static void main(String args[]) {
// TODO 自動生成方法存根
try {
System.out.print("輸入線程數 p(p>=2):");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String A = (String) br.readLine();
int p = Integer.parseInt(A);
tnum = p;
System.out.print("輸入求和數 n:");
BufferedReader cr = new BufferedReader(new InputStreamReader(System.in));
String B = (String) cr.readLine();
String x[] = B.split(" ");
int[] n = new int[x.length];
for (int i = 0; i < x.length; i++) {
n[i] = new Integer(x[i]).intValue();
}
int c = n.length / p;
int a[][] = new int[p][c]; //定義一個多維數組
int b = 0;
for (int i = 0; i < p; i++) //將n[]中元素賦值給多維數組
for (int j = 0; j < c; j++) {
a[i][j] = n[b];
b++;
}
for (int i = 0; i < p; i++) { //測試多維數組輸出
for (int j = 0; j < c; j++) {
System.out.print(a[i][j] + " ");
}
System.out.println();
}
for (int i = 0; i < p; i++) //創建線程
new testthread(a[i]).start();

}
catch (IOException e) {}

}

}

隨便寫寫,沒有測試過。你自己調調看吧。

大概思路就是給一個方法合並結果,並對已經完成的thread進行計數

當完成的thread的數量==總數的時候,最後結果就出來了

D. java 如何獲得線程池中正在執行的線程數

java中線程池的監控可以檢測到正在執行的線程數。
通過線程池提供的參數進回行監控。線程池裡有一答些屬性在監控線程池的時候可以使用
taskCount:線程池需要執行的任務數量。
completedTaskCount:線程池在運行過程中已完成的任務數量。小於或等於taskCount。
largestPoolSize:線程池曾經創建過的最大線程數量。通過這個數據可以知道線程池是否滿過。如等於線程池的最大大小,則表示線程池曾經滿了。
getPoolSize:線程池的線程數量。如果線程池不銷毀的話,池裡的線程不會自動銷毀,所以這個大小隻增不+ getActiveCount:獲取活動的線程數。
通過擴展線程池進行監控。通過繼承線程池並重寫線程池的beforeExecute,afterExecute和terminated方法,我們可以在任務執行前,執行後和線程池關閉前干一些事情。如監控任務的平均執行時間,最大執行時間和最小執行時間等。這幾個方法在線程池裡是空方法。如:
protected void beforeExecute(Thread t, Runnable r) { }

E. JAVA多線程累加

ExecutorServicethreadPool2=Executors.newFixedThreadPool(10);

ExecutorCompletionService<Integer>executorCompletionService=newExecutorCompletionService<Integer>(

threadPool2);

for(inti=0;i<10;i++){

executorCompletionService.submit(newCallable<Integer>(){

@

publicIntegercall()throwsException{

intsum=0;

for(intj=0;j<10;j++){

sum+=newRandom().nextInt(1000);

}

System.out.println("num:"+sum);

returnsum;

}

});

}

intsum=0;

for(inti=0;i<10;i++){

try{

intnum=executorCompletionService.take().get();

sum+=num;

}catch(InterruptedExceptione){

e.printStackTrace();

}catch(ExecutionExceptione){

e.printStackTrace();

}

}

System.out.println("sum:"+sum);

F. java多線程,要求三個線程,一個從0開始計數,一個存放計數,一個輸出

將計數、存放、輸出三個方法中的目標變數進行同步。就可以了
也就是說,當3個線程同時使用數據時,讓它們排個隊,一個一個來。

G. JAVA採用實現Runnable介面的多線程技術,用50個線程,生成10000個[1-1000]間的隨機整數。

public class RandomNumber implements Runnable {
private final byte[] lock; // 同步對象鎖
private Random random; // 用於生成隨機數
private int sum; // 用於計算產生的隨機數總數

public RandomNumber() {
lock = new byte[1];
random = new Random();
}

@Override
public void run() {
while (true) {
int rd = random.nextInt(1001); // 產生0 - 10000的隨機數
if (rd == 0) {
continue;
} else {
if (sum >= 10000) {
return;
}
try {
Thread.sleep(1); // 為了效果更明顯,當前線程睡1毫秒
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized (lock) {
// 獲取到對象鎖之後,需要判斷sum的大小,因為此時sum可能已經為10000了
if (sum < 10000) {
sum++;
System.out.println(Thread.currentThread().getName()
+ " - 第" + sum + "個隨機數:" + rd);
}
}
}
}
}
// main測試函數
public static void main(String[] args) throws Exception {
RandomNumber rn = new RandomNumber();
// 循環產生50個線程
for (int i = 0; i < 50; i++) {
new Thread(rn).start();
}
}
}
有問題再追問,一起學習探討

H. 鍦╦ava涓鎬庢牱緇熻′竴涓綰跨▼鎵ц岀殑嬈℃暟鍜屼笉鑳芥墽琛岀殑嬈℃暟

鎬濊礬錛
鍒涘緩綰跨▼緇ф壙綰跨▼綾繪垨鑰呭疄鐜扮嚎紼嬫帴鍙
閲嶅啓run鏂規硶
鍦╮un鏂規硶閲岄潰鍐檉or寰鐜錛
寰鐜璇鍙ュ潡涓鎵撳嵃綰跨▼綾葷殑闈欐佹柟娉.currentthread().getname(錛
+寰鐜鐨勮嚜澧炲箋
錛屼富綰跨▼鍒涘緩鑷瀹氫箟瀵硅薄瀹炰緥銆
璋冪敤start錛堬級鏂規硶ok銆併

閱讀全文

與java多線程之間統計數量相關的資料

熱點內容
raw文件系統無法格式化 瀏覽:188
三菱編程軟體哪個最新 瀏覽:984
linuxip動態獲取 瀏覽:240
cs6保存圖片程序錯誤 瀏覽:701
吻戲劇大全美國 瀏覽:839
血腥大尺度電影 瀏覽:885
桌面突然多了一個文件夾刪不掉 瀏覽:126
自動獲得已打開文件的文件名 瀏覽:781
麥德龍app能注冊嗎 瀏覽:843
黃小說TXT免費下載 瀏覽:895
華盛頓文件有哪些 瀏覽:456
關於修仙的電影有哪些 瀏覽:828
ps上一個文件找不到了 瀏覽:448
大數據形式包括什麼意思 瀏覽:514
天正電氣win1064位破解版 瀏覽:176
華碩f83e42se升級 瀏覽:705
醉猴拳完整版 瀏覽:619
內容怎麼轉發成文件 瀏覽:810
cmd病毒代碼 瀏覽:830
解壓縮保留損壞文件 瀏覽:293

友情鏈接