synchronized(obj) {}
这里的obj对象是下面4个线程的共享对象, 并非一定要导入这个obj, 只要是线程之间的共享元素就行.
只有如此, 才能起到锁的作用, 当一个线程A运行synchronized方法时若有另外一个线程B也运行到了synchronized这里, B想要运行synchronized中的代码就必须要持有方法中声明的锁, 也就是说必须要等到线程A运行完之后释放锁被线程B拿到才得以运行, 否则只有等待.
如此而来, 虽然在一定程度上降低了运行效率, 却得以大大提高了多个线程操作同一个值的风险. |