gpt4 book ai didi

java - 代码块上的同步

转载 作者:行者123 更新时间:2023-12-02 08:23:00 25 4
gpt4 key购买 nike

我理解代码块的同步意味着特定代码一次只能由一个线程访问,即使许多线程正在等待访问该代码。

当我们在 run 方法中编写线程类时,我们通过给定对象来启动同步块(synchronized block)。例如

 class MyThread extends Thread{
String sa;
public MyThread(String s){
sa=s;
}
public void run(){
synchronized(sa){
if(sa.equals("notdone"){
//do some thing on object
}
}
}
}

这里我们给了同步块(synchronized block)一个对象,它的需要是什么。我们如何为该特定代码块提供同步

最佳答案

我建议

  • 扩展 Runnable 而不是 Thread。
  • 不要锁定外部的 Runnable。相反,您应该调用一个可能使用内部锁的方法。
  • 字符串作为锁并不是一个好的选择。这意味着“hi”和“hi”将共享锁,但 new String(“hi”) 不会。
  • 如果您在线程的生命周期内锁定所有其他线程,为什么要使用多个线程?

关于java - 代码块上的同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5120100/

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