并发编程: 线程八锁的情况示范


线程八锁即多线程的情况下由不同的调用方法或者限制来判断不同的执行结果.下面进行一一演示

示例1:这个例子的执行结果是 1,2 或者2,1,因为调用方法的时候 用了synchronized关键字,所以两个线程是互斥的,就看cpu先分配给线程a还是b了

示例2: 结果和实例1的结果一样,但有不同的地方就是,线程里面有休眠时间,两则是互斥的,所有执行a的时候会等待1秒才执行2

示例3:这个示例多了一个方法c 但是没有用synchronized来进行锁操作, 所以方法c在与 a,b 两个之间是并行的, c在任何时候都可能打印出来.

示例 4:这个示例出现了两个new对象来调用两个线程,所以两个之间不会有互斥问题,每个线程负责各自的对象,锁没有被排斥.所以两则是并行执行.

示例 5: a方法加了static,所以这个锁,锁住的是这个类的类对象.而b方法是锁的是this对象,所以两则锁的是不同的对象,两则没有互斥,所以是并行执行.

示例 6: 相对5来说,b方法也加了static,所以两则锁的都是类对象,有互斥关系,会阻塞,所以线程是一个一个执行的.

 示例7:这个示例出现了两个new对象来调用两个线程,所以两个之间不会有互斥问题,每个线程负责各自的对象,锁没有被排斥.所以两则是并行执行. 和示例5一样

 示例8:虽然两个方法调用的两个对象,但是两个方法都有static修饰,所以两个锁的都是类对象,而类对象只有一个,所以是互斥的,会阻塞,一个个执行.

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值