要点
Thread.sleep()这个静态方法可以强制线程进入等待状态到过了设定时间
为止,例如Thread.sleep(2000)会睡上2秒。
可以调用sleep()让所有的线程都有机会运行。
sleep()方法可能会抛出InternuptedException异常,所以要包在try/catch
块,或者把它声明出来。
你可以用setName()方法来帮线程命名,通常是用来除错的。
如果两个或以上的线程存取堆上相同的对象可能会出现严重的问题。
如果两个或以上的线程存取相同的对象肯能会引起数据的损坏。
要让对象在线程上有做够的安全性,就要判断哪些指令不能被分隔执行。
使用synchronized这个关键词修饰符可以防止两个线程同时进入同一个对象
的同一方法。
每个对象都有单一的锁,单一的钥匙。这是会在对象带有同步化方法时才有
实际的用途。
线程尝试要进入同步化过的方法时必须要取得对象的钥匙,如果因为已经被
别的线程拿走了,那就得等。
对象就算是多个同步化过的方法,也还是只有一个锁。一旦某个线程进入该
对象的同步化方法,其他线程就无法进入该对象的任何同步化线程。