译法有多种,个人认为线程锁最准确切,排它性最强,最容易理解,一说出来就知道是线程中的锁对象。
其它几种译法在不同的语境下有不同的含义。
锁:过于广泛,歧义太多。
锁旗标:生僻,一般人听不懂,还得解释一下,不具备通用性。大概是来自lock flag
锁对象:比较广泛,歧义较多,需要特定语境方可理解。
在Runnable实现类中,run()方法之前,创建线程锁对象,这个对象不挑食,可以是任意对象,字符串、整型等。
线程启动之前,先判断线程锁的标志位,如果是未锁定状态,则可以启动,启动后,将标志位设置为锁定状态,称为持有线程锁。执行完毕后,将标志位设置为未锁定状态,称为释放锁。
此时,抢到CPU权限的线程,可以判断锁的标志位,此时标志位为未锁定状态,线程可以持有锁,执行代码,执行完毕后,设置标志位,释放锁。
如此循环往复,即线程锁的运行机制。