![9c9c1a2fc23037cfeac2c9b9fb1c9473.png](https://i-blog.csdnimg.cn/blog_migrate/fe864e48ee764d009195fc0ae14b0839.jpeg)
1、同步代码块:synchronized
当多线程并发, 有多段代码同时执行时, 我们希望某一段代码执行的过程中CPU不要切换到其他线程工作. 这时就需要同步。
如果两段代码是同步的, 那么同一时间只能执行一段, 在一段代码没执行结束之前, 不会执行另外一段代码。
synchronized关键字加上一个锁对象就可以同步代码,这个锁对象可以是任意的一个对象,只要求是同一个就行。
![c399292a9953374059503cd4c2960b24.png](https://i-blog.csdnimg.cn/blog_migrate/fda1462cd64b731e1074f313a72dc956.jpeg)
现在在主函数里面创建2条线程执行:如果不加synchronized(d),可能输出print1 和print2就会出现乱序的问题(你好呀TO)。
![fe1421ab8406e8ac00141913ea9af4ca.png](https://i-blog.csdnimg.cn/blog_migrate/7accaf8e25d8908a9f97c985bafab1ab.jpeg)
2、同步方法:synchronized
使用synchronized关键字修饰一个方法, 该方法中所有的代码都是同步的。