第三章 线程的同步与死锁

在多线程处理当中,可以利用Runnable描述多个线程操作的资源,而Thread描述每一个线程对象,于是当多个线程访问同一资源的时候如果处理不当就会产生数据的错误操作。

线程同步

##所谓同步就是指多个操作系统在同一个时间段内只能有一个线程进行,其他线程要等待此线程完成之后才可以继续进行。
##解决同步问题的关键是锁,是指当某一个线程执行操作的时候,其他线程外面等待。
在这里插入图片描述
可以使用synchronized关键字实现这把所锁的功能,定义同步方法或同步代码块。在同步代码块的操作里面的代码只允许一个线程执行。
1、利用同步代码块进行处理:

synchronized(同步对象){
  同步代码操作;
}

一般要进行同步对象处理的时候可以采用当前对象this进行同步。
加入同步处理之后,程序的整体性能下降了,同步实际上会造成性能的降低,异步才能达到性能的提升。
2、利用同步方法解决:只需在方法定义上使用synchronized关键字即可。
##两种方法有一样,在日后学习Java类库的时候会发现,系统中许多的类上使用的都是同步方法。

死锁

死锁是在多线程同步过程中有可能产生的一种问题,指的是若干个线程彼此互相等待的状态。死锁实际上是一种开发过程中出现的一种不确定状态, 有时候代码处理不当则会不定期出现死锁,这属于正常开放中的调试问题。
##若干个线程访问同一资源时一定要进行同步处理,而过多的同步会造成死锁(死锁是由同步引起的)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值