2013-03-10 115 views
0

多少线程会同时访问,如果该方法是静态的同步,也多少线程会同时访问,如果该方法是静态的,最后如果方法是同步的实例方法有多少线程会同时访问?线程同步的方法?

回答

2
  • 使用static只有不会阻止任何线程访问的方法在任何时候
  • 仅使用​​,所述获得性显示器属于为其调用方法的对象。您仍然可以在同一类的其他实例上调用相同的方法
  • 使用static synchronized,获得的监视器属于class而不是属于特定对象,这意味着静态方法只能由一个线程同时调用,无论具体情况如何

后果:请注意,如果其中一个方法是静态的,那么多个线程可以同时调用两个同步方法,这可能是一个陷阱。

+0

这是正确的答案,虽然“后果”可能会多一点明确的阐述:即的原因不止一个线程可以同时执行的是静态同步只能通过尝试运行其他静态方法的其他线程或停止执行反对课堂本身。而同步实例方法仅阻止其他线程针对该特定实例的其他同步方法运行。原因是每个实例都有一个监视器用于类和监视器:同步是针对单个监视器。 – javadba 2013-03-10 16:46:19