(1)同步代码块:位置比较灵活,锁对象可以任意对象,但必须是同一对象。格式:
synchronized(对象) { //任意对象都可以。这个对象就是锁。
需要被同步的代码;
}
(2)同步函数:声明方法时加synchronized关键字,同步函数使用的锁是this,静态同步函数的锁是该类的字节码文件对象。
(3)在一个类中只有一个同步,可以使用同步函数。如果有多同步,必须使用同步代码块,来确定不同的锁。所以同步代码块相对灵活一些。
(1)同步代码块:位置比较灵活,锁对象可以任意对象,但必须是同一对象。格式:
synchronized(对象) { //任意对象都可以。这个对象就是锁。
需要被同步的代码;
}
(2)同步函数:声明方法时加synchronized关键字,同步函数使用的锁是this,静态同步函数的锁是该类的字节码文件对象。
(3)在一个类中只有一个同步,可以使用同步函数。如果有多同步,必须使用同步代码块,来确定不同的锁。所以同步代码块相对灵活一些。