java 线程同步块_Java多线程同步块问题

为什么加了同步块,还是出现了负的票数呢

//1.创建一个实例类实现Runnable接口,现象接口中的run方法,将要执行的代码放入到方法中

class thread2 implements Runnable{

//假设有一百张票在四个窗口出售

private int i=100;

@Override

public void run() {

// TODO Auto-generated method stub

Object obj=new Object();

while(true) {

synchronized(obj){

if(i>0) {

try {

Thread.sleep(10);

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

System.out.println(Thread.currentThread()+"+"+i--);

}else break;

}

}

}

}

//通过实现Runnable接口的方式创建线程

public class 实现runnable接口 {

public int i=100;

public static void main(String[] args) {

// TODO Auto-generated method stub

//2.创建一个实现类对象

thread2 th=new thread2();

//3.创建四个Thread对象,将th作为参数传入

Thread Th1=new Thread(th);

Thread Th2=new Thread(th);

Thread Th3=new Thread(th);

Thread Th4=new Thread(th);

//4.调用start方法,开启线程,调用实现接口子类中的run方法

Th1.start();

Th2.start();

Th3.start();

Th4.start();

}

}

输出结果:

Thread[Thread-0,5,main]+100

Thread[Thread-3,5,main]+99

Thread[Thread-2,5,main]+98

Thread[Thread-1,5,main]+97

Thread[Thread-0,5,main]+96

Thread[Thread-2,5,main]+95

Thread[Thread-1,5,main]+94

Thread[Thread-3,5,main]+94

Thread[Thread-0,5,main]+93

Thread[Thread-2,5,main]+92

Thread[Thread-1,5,main]+91

Thread[Thread-3,5,main]+92

Thread[Thread-0,5,main]+91

Thread[Thread-1,5,main]+90

Thread[Thread-3,5,main]+89

Thread[Thread-2,5,main]+90

Thread[Thread-0,5,main]+88

Thread[Thread-3,5,main]+87

Thread[Thread-1,5,main]+86

Thread[Thread-2,5,main]+86

Thread[Thread-0,5,main]+85

Thread[Thread-3,5,main]+84

Thread[Thread-1,5,main]+83

Thread[Thread-2,5,main]+82

Thread[Thread-0,5,main]+81

Thread[Thread-3,5,main]+80

Thread[Thread-1,5,main]+79

Thread[Thread-2,5,main]+78

Thread[Thread-0,5,main]+77

Thread[Thread-3,5,main]+76

Thread[Thread-1,5,main]+75

Thread[Thread-2,5,main]+74

Thread[Thread-0,5,main]+73

Thread[Thread-3,5,main]+72

Thread[Thread-1,5,main]+71

Thread[Thread-2,5,main]+70

Thread[Thread-3,5,main]+69

Thread[Thread-1,5,main]+68

Thread[Thread-0,5,main]+67

Thread[Thread-2,5,main]+66

Thread[Thread-1,5,main]+65

Thread[Thread-2,5,main]+63

Thread[Thread-3,5,main]+64

Thread[Thread-1,5,main]+62

Thread[Thread-0,5,main]+61

Thread[Thread-2,5,main]+60

Thread[Thread-3,5,main]+59

Thread[Thread-1,5,main]+58

Thread[Thread-0,5,main]+57

Thread[Thread-2,5,main]+56

Thread[Thread-3,5,main]+55

Thread[Thread-1,5,main]+54

Thread[Thread-0,5,main]+53

Thread[Thread-2,5,main]+52

Thread[Thread-1,5,main]+51

Thread[Thread-3,5,main]+50

Thread[Thread-0,5,main]+49

Thread[Thread-2,5,main]+48

Thread[Thread-3,5,main]+47

Thread[Thread-1,5,main]+46

Thread[Thread-0,5,main]+45

Thread[Thread-2,5,main]+44

Thread[Thread-3,5,main]+43

Thread[Thread-1,5,main]+42

Thread[Thread-0,5,main]+41

Thread[Thread-2,5,main]+40

Thread[Thread-3,5,main]+39

Thread[Thread-1,5,main]+38

Thread[Thread-0,5,main]+37

Thread[Thread-2,5,main]+36

Thread[Thread-3,5,main]+35

Thread[Thread-1,5,main]+34

Thread[Thread-0,5,main]+33

Thread[Thread-2,5,main]+32

Thread[Thread-3,5,main]+31

Thread[Thread-1,5,main]+30

Thread[Thread-0,5,main]+29

Thread[Thread-2,5,main]+28

Thread[Thread-1,5,main]+27

Thread[Thread-3,5,main]+26

Thread[Thread-0,5,main]+25

Thread[Thread-2,5,main]+24

Thread[Thread-1,5,main]+23

Thread[Thread-3,5,main]+22

Thread[Thread-0,5,main]+21

Thread[Thread-2,5,main]+20

Thread[Thread-3,5,main]+19

Thread[Thread-1,5,main]+18

Thread[Thread-0,5,main]+17

Thread[Thread-2,5,main]+16

Thread[Thread-1,5,main]+15

Thread[Thread-3,5,main]+14

Thread[Thread-0,5,main]+13

Thread[Thread-2,5,main]+12

Thread[Thread-3,5,main]+11

Thread[Thread-1,5,main]+10

Thread[Thread-0,5,main]+9

Thread[Thread-2,5,main]+8

Thread[Thread-3,5,main]+7

Thread[Thread-0,5,main]+6

Thread[Thread-1,5,main]+6

Thread[Thread-2,5,main]+5

Thread[Thread-3,5,main]+4

Thread[Thread-1,5,main]+3

Thread[Thread-0,5,main]+2

Thread[Thread-3,5,main]+1

Thread[Thread-2,5,main]+0

Thread[Thread-0,5,main]+-1

Thread[Thread-1,5,main]+-2

最后还是出现了负数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值