gpt4 book ai didi

java - 什么是类级同步。如果该类被一个线程锁定在同一其他线程上,则可以访问该类的其他方法

转载 作者:行者123 更新时间:2023-11-29 05:17:16 25 4
gpt4 key购买 nike

有一个EmployeeInfo类它有静态同步方法非静态同步方法

public class EmployeeInfo{
public static synchronized void insert(){
//Insert code
}

public synchronized void update(){
//update code
}

public void delete(){
//update code
}
}

有五个线程A、B、C、D、E,每个线程都在运行。

一个线程来访问 EmployeeInfo 类的方法 insert()

同时:

  • 现在 B 线程再次尝试访问 insert() 方法 - 会发生什么?
  • 现在 C 线程来尝试访问 update() - 会发生什么?
  • 现在 D 线程来尝试访问 delete() - 会发生什么?

请按照上面的例子解释类级同步的概念。

最佳答案

这里涉及两个单独的锁 - 一个用于调用 update实例,另一个用于类本身。因此线程 B 将被阻塞,直到线程 A 完成,但其他两个线程将执行而不会阻塞。 (D 无论如何都没有同步。)

您的代码大致等同于:

public class EmployeeInfo{
public static void insert(){
synchronized (EmployeeInfo.class) {
// Insert code
}
}

public void update() {
synchronized (this) {
// Update code
}
}

public void delete() {
// Note: no synchronization
// Delete code
}
}

关于java - 什么是类级同步。如果该类被一个线程锁定在同一其他线程上,则可以访问该类的其他方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26093295/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com