解决方案 »

  1.   

    synchronized方法只能被一个线程调用,同时拥有该方法的对象被锁定,这样其他线程调用该对象上的其他synchronized方法就会被阻塞,如果先前的方法运行时间比较长(也就是你说的大),这样其他线程就会一直被阻塞,所以效率低。至于线程的run方法被声明为synchronized方法,其他的synchronized方法将不能被任何线程调用,因为run一直在运行,但可以由自己调用,可以参考http://blog.csdn.net/skywalker_only/article/details/38927919