java中的线程块问题

java中的线程块问题,java,multithreading,synchronization,block,Java,Multithreading,Synchronization,Block,我有线程阻塞问题。请帮帮我。 在我的课堂上,我有两个对象。一个用于同步线程,另一个用于执行实际业务操作 这是我的班级 Class A{ Object lock = new Object(); B b = new B(); public addSomething(){ synchronized(lock){ b.doThis(); } } } 我有一个类a的实例,它是“a”,来自访问方法a.addSomething()的多个线程。为此,我遇到了线

我有线程阻塞问题。请帮帮我。 在我的课堂上,我有两个对象。一个用于同步线程,另一个用于执行实际业务操作

这是我的班级

Class A{
   Object lock = new Object();
   B b = new B();

  public addSomething(){
    synchronized(lock){
       b.doThis();
   }
  }
}

我有一个类a的实例,它是“a”,来自访问方法a.addSomething()的多个线程。为此,我遇到了线程阻塞问题

问题可能出在
b.doThis()
。如果它表现不好(执行需要很长时间,或者可能永远不会完成),那么调用
addSomething
的所有其他线程都将被阻止。

在使用该锁的类中只有一个方法?或者那把锁是在其他地方用的?你们知道线程应该阻塞直到B.doThis()完成,对吗?什么是线程阻塞问题?希望操作
b.doThis()
不会阻塞IO之类的东西?您的代码正在做您(大概)希望它做的事情。是的,我有其他方法使用“锁定”进行同步。看不到其余的代码,但为了您自己的理智,请锁定
final
。这是一个很好的做法,可以对任何成员字段执行,但特别是对用作锁的对象。