简单聊聊多线程的同步

0-前言

  最近发现有新手滥用同步,来简单聊聊Java多线程的同步问题;

1-什么是同步

  同步,简单点说就是一个代码块中多个操作在同一时间段内只能有一个线程进行,其他线程需要等待此线程完成后才可以继续执行;

2-什么时候才需要同步

  当多个线程访问同一资源时(或者有需要多个线程共享的变量时),这个时候,资源被多个线程共用,会由于程序延迟等原因有可能导致数据错误操作,比如扣减库存,有可能会出现负库存;这种情况下,就需要进行同步;

  加了同步,多线程实际就变成单线程了,跟单线程没有区别,也失去了多线程的意义,性能也急剧下降;

  所以,同步是通过牺牲性能来保证共享数据的安全性

  同步的目的,仅仅是为了保证数据的一致性和安全性,没有任何其他目的和意义;

3-简单总结:

    1、当多个线程访问同一资源时(或者有需要多个线程共享的变量时),为了保证数据安全,可以考虑加同步,其他时候不要加同步;

    2、过多同步可能会造成死锁,加同步时要考虑避免死锁;

  

posted @ 2020-07-03 09:07  程序员恒哥  阅读(362)  评论(0编辑  收藏  举报