قفل
قفل 相当于 当前对象的 متزامن
استيراد java.util.concurrent.locks.lock ؛ استيراد java.util.concurrent.locks.reentrantlock ؛ / * * قفل القفل = جديد reentrantlock () ؛ * lock.lock () ؛ lock.unlock () ؛ * 类似于 متزامن , 但不能与 synchronized 混用 */ الفئة العامة locktest {public static void main (string [] args) {Final Outer Outer = new Locktest (). new Outer () ؛ مؤشر ترابط جديد (جديد RunNable () {Override public void run () {// todo method method tuto change بينما (true) {outer.out1 ("Zhangxiaoxiao") ؛ outer.out2 ("lihuoming") ؛}}}). start () ؛ مؤشر ترابط جديد (جديد RunNable () {Override public void run () {// todo method method tuto change بينما (true) {outer.out1 ("Zhangxiaoxiao") ؛ outer.out2 ("lihuoming") ؛}}}). start () ؛ } الفئة الخارجية {lock lock = new reentrantlock () ؛ void out1 (اسم السلسلة) {lock.lock () ؛ int len = name.length () ؛ لـ (int i = 0 ؛ i <len ؛ i ++) {system.out.print (name.charat (i)) ؛ } system.out.println () ؛ lock.unlock () ؛ } void Out2 (اسم السلسلة) {lock.lock () ؛ int len = name.length () ؛ لـ (int i = 0 ؛ i <len ؛ i ++) {system.out.print (name.charat (i)) ؛ } system.out.println () ؛ lock.unlock () ؛ }}}
读写锁 reentrantreadwritelock
: : 允许多条线程同时读;不能读中有写;不能写中有读;不能写中有写
استيراد java.util.hashmap ؛ استيراد java.util.map ؛ استيراد java.util.concurrent.locks.readwritelock ؛ استيراد java.util.concurrent.locks.reentrantreadwritelock ؛ / * * : : 设计一个 缓存机制 缓存机制 的 伪代码 * 从集合中读取数据 , 读取不到 , 就写入 , 再考虑多线程并发的情况 再考虑多线程并发的情况 */ public class readWritelockTest2 {private map <string ، object> data = new hashmap <string ، object> () ؛ readWritelock lock = جديد reentrantreadwritelock () ؛ // 读写锁 الكائن العام getInstance1 (مفتاح السلسلة ، الكائن OBJ) {lock.readlock (). lock () ؛ قيمة الكائن = فارغة ؛ حاول {value = data.get (مفتاح) ؛ if (value == null) {// 一条线程进入这里 , lock.readlock (). unlock () ؛ // 读锁解了 , 其他线程就可能也到这了 其他线程就可能也到这了 lock. / *先判断数据 , 如果不存在 , 才写入 , 因为 界时当写锁解除后 , 其他 线程 , 再想写入时 , 判断到数据存在 , 就跳过了。就不会发生同时写入的情况 */ data.put (المفتاح ، القيمة) ؛ } lock.writelock (). }} أخيرًا {lock.readlock (). unlock () ؛ } قيمة الإرجاع ؛ }