使用synchronized虽然能够避免不同步的现象出现,但是也会出现弊端,比如代码执行时间过长,那么其他线程就必须等待该线程执行完毕释放锁之后才能拿到锁。
面对这种问题可以使用同步代码块来解决。
2.2.1synchronized方法的弊端:任务类:
public class Task { private String getData1; private String getData2; synchronized public void doLongTimeTask() { try { System.out.println("begin task"); Thread.sleep(3000); getData1 = "长时间处理任务后从远程返回的值1 threadName = " + Thread.currentThread().getName(); getData2 = "长时间处理任务后从远程返回的值2 threadName = " + Thread.currentThread().getName(); System.out.println(getData1); System.out.println(getData2); System.out.println("end task"); } catch (InterruptedException e) { e.printStackTrace(); } } }