導航:首頁 > 編程語言 > java多線程輸出

java多線程輸出

發布時間:2022-08-12 16:47:24

java多線程的問題為何輸出結果只有一個

1、主要是tt.join的問題。
2、當子線程開啟後,主線程和子線程是並發或並行執行的,會多線程輸出。
但是tt.join是指將tt線程與主線程(即tt.join這段代碼所運行時候的線程)合並,即等tt.join運行完後執行剛剛的主線程。
而你的tt線程中的run()方法為:while(true)所以tt.join之後,tt一直在運行,
故只能看一個線程在運行。

希望能解決你的問題。

❷ Java多線程調試如何完成信息輸出處理

默認情況下,在調試多線程程序時,當遇到斷點時(breakpoint),當前線程暫停,而其它線程繼續運行,有些情況下,這是我們不想要看到的。比如下面的例子:

再調試多線程程序:

可以看到所有線程都Suspend了。

❸ java多線程編程代碼如下,輸出結果如下:

首先,你同步的是具體的某個Test實例, 對於那個實例來說,實際上只有一個線程訪問了那個代碼塊,但是sum和other卻是多個線程同時去進行訪問,實際上這是不安全的,如果你想實現每次都輸出10000的效果,那麼正確的應該是在Test.class上加鎖,而不是獲取Test實例的鎖,修改後的代碼如下:

publicclassTestextendsThread{

publicstaticintsum=10000;

publicstaticintother=0;

publicvoidgetMoney(){
synchronized(Test.class){

System.out.println(Thread.currentThread().getName()+"開始執行");
sum=sum-100;

System.out.println("sum-100");

other=other+100;

System.out.println("other+100");

System.out.println(sum+other);
System.out.println(Thread.currentThread().getName()+"執行完成");
}

}

publicvoidrun(){

getMoney();

}

publicstaticvoidmain(String[]agrs){

Threadt[]=newThread[10];

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

t[i]=newTest();

t[i].start();

}

}

}

// 上面代碼能得到你的結果


❹ 用java多線程編程,輸出"hello world"

4個線程,其中兩個線程每次對j增加1,另外兩個線程對j每次減少1。
參考一下以下程序吧::
package com.lzy.interviewing;

public class ThreadTest1 {

private int j ;

public synchronized void inc() {
j++;
System.out.println(Thread.currentThread().getName() + "This +j is :"
+ j);
}

public synchronized void dec() {
j--;
System.out.println(Thread.currentThread().getName() + "This -j is :"
+ j);
}

class Inc implements Runnable {
public void run() {
for (int i = 0; i < 10; i++) {
inc();
}
}
}

class Dec implements Runnable {
public void run() {
for (int i = 0; i < 10; i++) {
dec();
}
}
}

public static void main(String[] args) {
// TODO Auto-generated method stub
ThreadTest1 tTest = new ThreadTest1();
Inc inc = tTest.new Inc();
Dec dec = tTest.new Dec();
for (int i = 0; i < 2; i++) {
Thread t = new Thread(inc);
t.start();
t = new Thread(dec);
t.start();
}
}
}

❺ java多線程輸出列印問題2

多線程是程序設計中最困難的一個環節。
1、樓主對多線程的認識通過程序來看,還是剛開始學。
2、沒有同步控制的多線程,就不能算是多線程。一般的多線程代碼都要有同步控制,即不讓多線程 跑亂。
3、因為你這個沒有任何同步控制,跑成各種情況都有可能。我就不分析了。
建議找下馬士兵的多線程視頻部分,他在這塊講得比較詳細和深入。
試下看吧。

❻ 使用java多線程列印0到1000輸出且不重復,如何實現

這其實是一個多線程,資源共享的問題。實現Runnable介面就可以了。

截圖是一個多線程資源共享的例子,每個線程可以互相知道ticket的值,這樣就不會重復。


把ticket初始為0,每個線程列印出ticket的值,打完+1。下一個線程再列印ticket就是+1之後的值。然後再判斷ticket的值,>=1000的時候停止線程。


詳細的你可以看看:

java多線程總結 - Rollen Holt - 博客園

http://www.cnblogs.com/rollenholt/archive/2011/08/28/2156357.html


完全可以解決你的需求

❼ java中怎樣多線程輸出012012012其中thread-0輸出0,thread-1輸出1,thread-2輸出2

class
Ctest
extends
Thread{
private
String
str;//用String是想著如果用其他字元串也可以,如果只是int容易出錯
public
Ctest(String
str){
this.str=str;
}
public
void
run(){
for(int
i=0;
i<50;i++){
System.out.print(str);
}
}
}
public
class
Test
{
public
static
void
main(String
args[]){
Ctest
ct1
=
new
Ctest("0");
Ctest
ct2
=
new
Ctest("1");
Ctest
ct3
=
new
Ctest("2");
ct1.start();
ct2.start();
ct3.start();
}
}//在run方法中加sleep
就好

❽ JAVA多線程,怎麼總是輸出兩個同樣的

這應該是java中多線程的安全問題吧,CPU處理切換時間片的速率是非常快的,
當線程1判斷完之後還沒來得及輸出,時間片就切換到線程2上了,
然後又進行了一次判斷結果還是大於0,但是還沒等到線程2輸出就又回到了線程1,接著執行
輸出語句,比如輸出10,輸出完之後又一次回到線程2上進行第二次輸出,輸出的結果和線程1
一樣(10)。我覺得應該是臨時阻塞問題。 希望能夠採納.

❾ java 多線程 ,輸出

你t0線程執行到else,列印一次前門入場和後門入場,雖然你加了鎖,但之後t1線程也還是會執行到else,所以又列印一次,沒有問題吧。就像你的if(i>0&&i<=40)一樣,兩個線程都會執行到。
所以你在else裡面也要加一個判斷,讓其中一個線程來輸出就行了,或者你可以t0線程輸出前門,t1線程輸出後門。

閱讀全文

與java多線程輸出相關的資料

熱點內容
解壓的密碼htm被屏蔽 瀏覽:502
冬天太冷冰箱壓縮機不啟動怎麼辦 瀏覽:82
手機打開vcf需要什麼編譯器 瀏覽:909
加密磁碟後開機很慢 瀏覽:270
長沙智能雲控系統源碼 瀏覽:256
阿里雲伺服器如何設置操作系統 瀏覽:999
超級命令的英文 瀏覽:782
做賬為什麼要用加密狗 瀏覽:586
考研群體怎麼解壓 瀏覽:156
linux修改命令提示符 瀏覽:226
圓圈裡面k圖標是什麼app 瀏覽:60
pdf加空白頁 瀏覽:945
linux伺服器如何看網卡狀態 瀏覽:317
解壓新奇特視頻 瀏覽:707
圖書信息管理系統java 瀏覽:554
各種直線命令詳解 瀏覽:864
程序員淚奔 瀏覽:147
素材怎麼上傳到伺服器 瀏覽:517
android百度離線地圖開發 瀏覽:191
web可視化編程軟體 瀏覽:294