java 測試多線程執行時遇到的疑問?
問題描述
java 測時多線程執行時的疑問?
public class Cai implements Runnable {
@Overridepublic synchronized void run() { for (int i = 0; i < 100; i++) {System.out.println(Thread.currentThread().getName()+' : '+i); }}
}
public class Run {
@Testpublic void test2() throws Exception { Cai cai = new Cai(); Thread thread = new Thread(cai); Thread thread2 = new Thread(cai); Thread thread3 = new Thread(cai); thread.setName('線程1'); thread2.setName('線程2'); thread3.setName('線程3'); thread.start(); thread2.start(); thread3.start();}
}當執行test2方法時,為什么會出現如: 線程1循環0-99,線程2循環0-10然后程序就結束了,這是為什么?線程2沒有執行完全,線程3就沒有執行到???
問題解答
回答1:加上 thread.join,主線程才會等待這個線程執行完畢
回答2:import java.io.*;class test { public static void main (String[] args) throws java.lang.Exception {System.out.println('hi');Cai cai = new Cai();Thread thread = new Thread(cai);Thread thread2 = new Thread(cai);Thread thread3 = new Thread(cai);thread.setName('線程1');thread2.setName('線程2');thread3.setName('線程3');thread.start();thread2.start();thread3.start(); }}class Cai implements Runnable { @Override public synchronized void run() {for (int i = 0; i < 100; i++) { System.out.println(Thread.currentThread().getName()+' : '+i);} }}
hi線程1 : 0線程1 : 1線程1 : 2線程1 : 3線程1 : 4線程1 : 5線程1 : 6線程1 : 7線程1 : 8線程1 : 9線程1 : 10線程1 : 11線程1 : 12線程1 : 13線程1 : 14線程1 : 15線程1 : 16線程1 : 17線程1 : 18線程1 : 19線程1 : 20線程1 : 21線程1 : 22線程1 : 23線程1 : 24線程1 : 25線程1 : 26線程1 : 27線程1 : 28線程1 : 29線程1 : 30線程1 : 31線程1 : 32線程1 : 33線程1 : 34線程1 : 35線程1 : 36線程1 : 37線程1 : 38線程1 : 39線程1 : 40線程1 : 41線程1 : 42線程1 : 43線程1 : 44線程1 : 45線程1 : 46線程1 : 47線程1 : 48線程1 : 49線程1 : 50線程1 : 51線程1 : 52線程1 : 53線程1 : 54線程1 : 55線程1 : 56線程1 : 57線程1 : 58線程1 : 59線程1 : 60線程1 : 61線程1 : 62線程1 : 63線程1 : 64線程1 : 65線程1 : 66線程1 : 67線程1 : 68線程1 : 69線程1 : 70線程1 : 71線程1 : 72線程1 : 73線程1 : 74線程1 : 75線程1 : 76線程1 : 77線程1 : 78線程1 : 79線程1 : 80線程1 : 81線程1 : 82線程1 : 83線程1 : 84線程1 : 85線程1 : 86線程1 : 87線程1 : 88線程1 : 89線程1 : 90線程1 : 91線程1 : 92線程1 : 93線程1 : 94線程1 : 95線程1 : 96線程1 : 97線程1 : 98線程1 : 99線程2 : 0線程2 : 1線程2 : 2線程2 : 3線程2 : 4線程2 : 5線程2 : 6線程2 : 7線程2 : 8線程2 : 9線程2 : 10線程2 : 11線程2 : 12線程2 : 13線程2 : 14線程2 : 15線程2 : 16線程2 : 17線程2 : 18線程2 : 19線程2 : 20線程2 : 21線程2 : 22線程2 : 23線程2 : 24線程2 : 25線程2 : 26線程2 : 27線程2 : 28線程2 : 29線程2 : 30線程2 : 31線程2 : 32線程2 : 33線程2 : 34線程2 : 35線程2 : 36線程2 : 37線程2 : 38線程2 : 39線程2 : 40線程2 : 41線程2 : 42線程2 : 43線程2 : 44線程2 : 45線程2 : 46線程2 : 47線程2 : 48線程2 : 49線程2 : 50線程2 : 51線程2 : 52線程2 : 53線程2 : 54線程2 : 55線程2 : 56線程2 : 57線程2 : 58線程2 : 59線程2 : 60線程2 : 61線程2 : 62線程2 : 63線程2 : 64線程2 : 65線程2 : 66線程2 : 67線程2 : 68線程2 : 69線程2 : 70線程2 : 71線程2 : 72線程2 : 73線程2 : 74線程2 : 75線程2 : 76線程2 : 77線程2 : 78線程2 : 79線程2 : 80線程2 : 81線程2 : 82線程2 : 83線程2 : 84線程2 : 85線程2 : 86線程2 : 87線程2 : 88線程2 : 89線程2 : 90線程2 : 91線程2 : 92線程2 : 93線程2 : 94線程2 : 95線程2 : 96線程2 : 97線程2 : 98線程2 : 99線程3 : 0線程3 : 1線程3 : 2線程3 : 3線程3 : 4線程3 : 5線程3 : 6線程3 : 7線程3 : 8線程3 : 9線程3 : 10線程3 : 11線程3 : 12線程3 : 13線程3 : 14線程3 : 15線程3 : 16線程3 : 17線程3 : 18線程3 : 19線程3 : 20線程3 : 21線程3 : 22線程3 : 23線程3 : 24線程3 : 25線程3 : 26線程3 : 27線程3 : 28線程3 : 29線程3 : 30線程3 : 31線程3 : 32線程3 : 33線程3 : 34線程3 : 35線程3 : 36線程3 : 37線程3 : 38線程3 : 39線程3 : 40線程3 : 41線程3 : 42線程3 : 43線程3 : 44線程3 : 45線程3 : 46線程3 : 47線程3 : 48線程3 : 49線程3 : 50線程3 : 51線程3 : 52線程3 : 53線程3 : 54線程3 : 55線程3 : 56線程3 : 57線程3 : 58線程3 : 59線程3 : 60線程3 : 61線程3 : 62線程3 : 63線程3 : 64線程3 : 65線程3 : 66線程3 : 67線程3 : 68線程3 : 69線程3 : 70線程3 : 71線程3 : 72線程3 : 73線程3 : 74線程3 : 75線程3 : 76線程3 : 77線程3 : 78線程3 : 79線程3 : 80線程3 : 81線程3 : 82線程3 : 83線程3 : 84線程3 : 85線程3 : 86線程3 : 87線程3 : 88線程3 : 89線程3 : 90線程3 : 91線程3 : 92線程3 : 93線程3 : 94線程3 : 95線程3 : 96線程3 : 97線程3 : 98線程3 : 99
我的可以啊,每次都可以
相關文章:
1. docker-machine添加一個已有的docker主機問題2. docker綁定了nginx端口 外部訪問不到3. node.js - nodejs debug問題4. docker 下面創建的IMAGE 他們的 ID 一樣?這個是怎么回事????5. docker - 如何修改運行中容器的配置6. docker images顯示的鏡像過多,狗眼被亮瞎了,怎么辦?7. docker網絡端口映射,沒有方便點的操作方法么?8. docker-compose中volumes的問題9. golang - 用IDE看docker源碼時的小問題10. debian - docker依賴的aufs-tools源碼哪里可以找到啊?
