Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java新手-同步静态方法锁定在类上_Java_Android - Fatal编程技术网

java新手-同步静态方法锁定在类上

java新手-同步静态方法锁定在类上,java,android,Java,Android,文档说明同步静态方法锁定类,但我不知道这意味着什么。你能解释一下吗 public static synchronized Object getObjectById (Class objclass, Long id) { 这意味着,无论何时访问此方法,它都将被锁定,在锁被销毁之前,没有其他线程能够访问它。换句话说,方法内容永远不会由多个线程同时执行 注意,同步本质上会减慢应用程序的运行速度,因为线程可能需要等待一段时间才能继续执行。这基本上意味着,如果类Foo中有静态同步方法,它们就不能同时运行

文档说明同步静态方法锁定类,但我不知道这意味着什么。你能解释一下吗

public static synchronized Object getObjectById (Class objclass, Long id) {

这意味着,无论何时访问此方法,它都将被锁定,在锁被销毁之前,没有其他线程能够访问它。换句话说,方法内容永远不会由多个线程同时执行


注意,同步本质上会减慢应用程序的运行速度,因为线程可能需要等待一段时间才能继续执行。这基本上意味着,如果类Foo中有静态同步方法,它们就不能同时运行。如果两个线程同时尝试访问它们,则一个线程将获得锁。其他线程将不得不等待

非静态同步方法使用某些对象作为锁。静态同步方法使用类

Foo a=新的Foo(); Foo b=新的Foo()

a、 syncMethod()和b.syncMethod()可以同时运行,因为它们锁定不同的对象


Foo.staticSyncMethod()和Foo.anotherStaticSyncMethod()不能同时运行。

假设您有两个静态方法,并且都定义为已同步。两个不能同时执行,因为它们共享同一个锁(即类本身)

这两者不能同时运行

但它们可以与非静态同步方法并发执行。原因是非静态同步方法锁定正在运行的实际实例


祝你好运。

general所有关于技术的问题,都需要解释。很容易在互联网上的其他任何地方找到,但是静态同步意味着什么。。。我理解synchronzedStatic的意思是“在类级别”,也就是说,您不需要实例来访问它。例如:
MyClass.myStaticMethod()
MyClass.MyClass\u属性
public static synchronized void Foo()

public static synchronized void Bar()