Java synchronized线程同步机制

Java 的多线程里,synchronized的作用还挺关键的。你如果经常碰到多线程抢数据的情况,那这个关键词绝对不能忽视。

同步方法就像给方法上了一把锁,每次只能一个线程进去。你要是不加锁,多个线程一起跑,打印数字都交错着来,根本没法看。加了锁之后,输出顺序就听话多了。

但得注意,不同的对象其实有不同的锁。每个线程如果拿的是各自的实例,那加再多的 synchronized 也白搭。想要它们共享锁,就得像例子里那样,搞个 static 的锁对象,都去争抢这一把。

同步代码块更灵活,可以细化到某个变量或者某段逻辑,效率高一些。比如只锁住一个共享对象,其他逻辑就不耽误了,适合性能要求比较高的场景。

synchronized好用是好用,就是要用对地方。多线程代码嘛,小心总没错。如果你有多个线程操作共享资源,可以从这个技巧开始优化。

doc 文件大小:290.5KB