菜鸟学习线程

来源:互联网 发布:三体 圣母 知乎 编辑:程序博客网 时间:2024/04/30 12:16

一 、

package com.ygsoft.eam.thread;

public class TicketDemo implements Runnable {
private int num =100;
Object obj = new Object(); 
public void run() {
// TODO Auto-generated method stub
while(num>0) { 
try {
Thread.sleep(10);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
synchronized (obj) {
System.out.println(Thread.currentThread().getName()+"......"+num--);
}
}
}
public static void main(String[] args) {
TicketDemo td = new TicketDemo();
Thread t1 = new Thread(td);
Thread t2 = new Thread(td);
Thread t3 = new Thread(td);
t1.start();
t2.start();
t3.start();
}

}


多次打印结果

Thread-0......100
Thread-2......99
Thread-1......98
Thread-1......97
Thread-0......96
Thread-2......95
Thread-0......94
Thread-1......93
Thread-2......92
Thread-1......91
Thread-2......90
Thread-0......89
Thread-2......88
Thread-0......87
Thread-1......86
Thread-0......85
Thread-1......84
Thread-2......83
Thread-1......82
Thread-0......81
Thread-2......80
Thread-2......79
Thread-1......78
Thread-0......77
Thread-0......76
Thread-2......75
Thread-1......74
Thread-0......73
Thread-2......72
Thread-1......71
Thread-1......70
Thread-0......69
Thread-2......68
Thread-0......67
Thread-2......66
Thread-1......65
Thread-2......64
Thread-0......63
Thread-1......62
Thread-2......61
Thread-0......60
Thread-1......59
Thread-1......58
Thread-2......57
Thread-0......56
Thread-0......55
Thread-2......54
Thread-1......53
Thread-2......52
Thread-0......51
Thread-1......50
Thread-0......49
Thread-2......48
Thread-1......47
Thread-1......46
Thread-0......45
Thread-2......44
Thread-2......43
Thread-0......42
Thread-1......41
Thread-2......40
Thread-0......39
Thread-1......38
Thread-2......37
Thread-0......36
Thread-1......35
Thread-2......34
Thread-0......33
Thread-1......32
Thread-2......31
Thread-0......30
Thread-1......29
Thread-2......28
Thread-0......27
Thread-1......26
Thread-2......25
Thread-0......24
Thread-1......23
Thread-2......22
Thread-0......21
Thread-1......20
Thread-2......19
Thread-0......18
Thread-1......17
Thread-2......16
Thread-0......15
Thread-1......14
Thread-2......13
Thread-0......12
Thread-1......11
Thread-2......10
Thread-0......9
Thread-1......8
Thread-2......7
Thread-0......6
Thread-1......5
Thread-2......4
Thread-0......3
Thread-1......2
Thread-2......1
Thread-0......0
Thread-1......-1

线程不同步

二、

package com.ygsoft.eam.thread;


public class TicketDemo implements Runnable {
private int num =100;
Object obj = new Object(); 
public void run() {
// TODO Auto-generated method stub
boolean b = true;
while(b) {
try {
Thread.sleep(10);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
synchronized (obj) {
if(num>0) 
System.out.println(Thread.currentThread().getName()+"......"+num--);
else 
b = false;
}
}
}
public static void main(String[] args) {
TicketDemo td = new TicketDemo();
Thread t1 = new Thread(td);
Thread t2 = new Thread(td);
Thread t3 = new Thread(td);
t1.start();
t2.start();
t3.start();
}
}


多次打印结果:

Thread-0......100
Thread-1......99
Thread-2......98
Thread-2......97
Thread-0......96
Thread-1......95
Thread-2......94
Thread-1......93
Thread-0......92
Thread-2......91
Thread-1......90
Thread-0......89
Thread-2......88
Thread-1......87
Thread-0......86
Thread-2......85
Thread-1......84
Thread-0......83
Thread-2......82
Thread-0......81
Thread-1......80
Thread-2......79
Thread-1......78
Thread-0......77
Thread-2......76
Thread-0......75
Thread-1......74
Thread-2......73
Thread-1......72
Thread-0......71
Thread-1......70
Thread-0......69
Thread-2......68
Thread-2......67
Thread-1......66
Thread-0......65
Thread-2......64
Thread-1......63
Thread-0......62
Thread-1......61
Thread-2......60
Thread-0......59
Thread-2......58
Thread-0......57
Thread-1......56
Thread-2......55
Thread-1......54
Thread-0......53
Thread-1......52
Thread-0......51
Thread-2......50
Thread-1......49
Thread-2......48
Thread-0......47
Thread-1......46
Thread-0......45
Thread-2......44
Thread-1......43
Thread-2......42
Thread-0......41
Thread-1......40
Thread-2......39
Thread-0......38
Thread-1......37
Thread-2......36
Thread-0......35
Thread-1......34
Thread-2......33
Thread-0......32
Thread-1......31
Thread-2......30
Thread-0......29
Thread-1......28
Thread-2......27
Thread-0......26
Thread-1......25
Thread-0......24
Thread-2......23
Thread-1......22
Thread-0......21
Thread-2......20
Thread-1......19
Thread-2......18
Thread-0......17
Thread-1......16
Thread-0......15
Thread-2......14
Thread-1......13
Thread-2......12
Thread-0......11
Thread-1......10
Thread-0......9
Thread-2......8
Thread-1......7
Thread-2......6
Thread-0......5
Thread-1......4
Thread-0......3
Thread-2......2
Thread-1......1


一中 线程不同步的原因是什么,求详解