Java的synchronized加在方法上或者对象上有什么区别
1、区别如下:用在实例方法上时,同步的是当前对象(this)。用在静态方法上时,同步的是表示方法所属类的Class类的对象。比如,如果静态方法所属的类是C,则同步的就是C.class。
2、synchronized加在方法上,只在当前类上起作用,即多个线程使用同一个对象调用该方法会同步。不同的对象访问不需要考虑同步。
3、对象锁 当一个对象中有synchronized method或synchronized block的时候调用此对象的同步方法或进入其同步区域时,就必须先获得对象锁。
java中的synchronized()的具体作用
synchronized加在方法上,只在当前类上起作用,即多个线程使用同一个对象调用该方法会同步。不同的对象访问不需要考虑同步。
当需要线程同步时用。比如多个线程同时调用某个方法,就应该加上synchronized关键字。
synchronized 关键字可以应用于方法或语句块,并为一次只应由一个线程执行的关键代码段提供保护。
Java中synchronized的作用,什么情况下使用?
1、Java语言的synchronized关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。
2、当需要线程同步时用。比如多个线程同时调用某个方法,就应该加上synchronized关键字。
3、synchronized 关键字可防止代码的关键代码段一次被多个线程执行。如果应用于静态方法(如上例中的 MySyncStaticMethod),那么,当该方法一次由一个线程执行时,整个类将被锁定。
java多线程中synchronized关键字的用法
除了方法前用synchronized关键字,synchronized关键字还可以用于方法中的某个区块中,表示只对这个区块的资源实行互斥访问。
Java语言的synchronized关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。
当需要线程同步时用。比如多个线程同时调用某个方法,就应该加上synchronized关键字。