Java锁机制Lock用法示例
本文实例讲述了Java锁机制Lock用法。分享给大家供大家参考,具体如下:
packagecom.expgiga.JUC; importjava.util.concurrent.locks.Lock; importjava.util.concurrent.locks.ReentrantLock; /** *一、用于解决多线程安全问题的方式: *1.同步代码块synchronized隐式锁 *2.同步方法synchronized隐式锁 *3.同步锁Lock(jdk1.5以后)显示锁 *注意:显示锁,需要通过lock()方式上锁,必须通过unlock()方式进行释放锁 */ publicclassTestLock{ publicstaticvoidmain(String[]args){ Ticketticket=newTicket(); newThread(ticket,"1号窗口").start(); newThread(ticket,"2号窗口").start(); newThread(ticket,"3号窗口").start(); } } classTicketimplementsRunnable{ privateinttick=100; privateLocklock=newReentrantLock(); @Override publicvoidrun(){ while(true){ lock.lock(); try{ if(tick>0){ try{ Thread.sleep(200); }catch(InterruptedExceptione){ e.printStackTrace(); } System.out.println(Thread.currentThread().getName()+"完成售票,余票为"+--tick); } }finally{ lock.unlock(); } } } }
运行结果:
1号窗口完成售票,余票为99
2号窗口完成售票,余票为98
2号窗口完成售票,余票为97
2号窗口完成售票,余票为96
2号窗口完成售票,余票为95
3号窗口完成售票,余票为94
1号窗口完成售票,余票为93
1号窗口完成售票,余票为92
1号窗口完成售票,余票为91
1号窗口完成售票,余票为90
1号窗口完成售票,余票为89
1号窗口完成售票,余票为88
1号窗口完成售票,余票为87
1号窗口完成售票,余票为86
2号窗口完成售票,余票为85
3号窗口完成售票,余票为84
1号窗口完成售票,余票为83
2号窗口完成售票,余票为82
3号窗口完成售票,余票为81
1号窗口完成售票,余票为80
1号窗口完成售票,余票为79
1号窗口完成售票,余票为78
1号窗口完成售票,余票为77
1号窗口完成售票,余票为76
1号窗口完成售票,余票为75
1号窗口完成售票,余票为74
1号窗口完成售票,余票为73
1号窗口完成售票,余票为72
2号窗口完成售票,余票为71
2号窗口完成售票,余票为70
2号窗口完成售票,余票为69
2号窗口完成售票,余票为68
3号窗口完成售票,余票为67
1号窗口完成售票,余票为66
1号窗口完成售票,余票为65
1号窗口完成售票,余票为64
1号窗口完成售票,余票为63
1号窗口完成售票,余票为62
1号窗口完成售票,余票为61
2号窗口完成售票,余票为60
2号窗口完成售票,余票为59
3号窗口完成售票,余票为58
3号窗口完成售票,余票为57
1号窗口完成售票,余票为56
1号窗口完成售票,余票为55
2号窗口完成售票,余票为54
2号窗口完成售票,余票为53
2号窗口完成售票,余票为52
3号窗口完成售票,余票为51
1号窗口完成售票,余票为50
1号窗口完成售票,余票为49
1号窗口完成售票,余票为48
1号窗口完成售票,余票为47
1号窗口完成售票,余票为46
1号窗口完成售票,余票为45
2号窗口完成售票,余票为44
3号窗口完成售票,余票为43
3号窗口完成售票,余票为42
3号窗口完成售票,余票为41
3号窗口完成售票,余票为40
3号窗口完成售票,余票为39
1号窗口完成售票,余票为38
2号窗口完成售票,余票为37
2号窗口完成售票,余票为36
2号窗口完成售票,余票为35
2号窗口完成售票,余票为34
2号窗口完成售票,余票为33
2号窗口完成售票,余票为32
2号窗口完成售票,余票为31
3号窗口完成售票,余票为30
1号窗口完成售票,余票为29
1号窗口完成售票,余票为28
1号窗口完成售票,余票为27
1号窗口完成售票,余票为26
1号窗口完成售票,余票为25
1号窗口完成售票,余票为24
1号窗口完成售票,余票为23
1号窗口完成售票,余票为22
1号窗口完成售票,余票为21
1号窗口完成售票,余票为20
1号窗口完成售票,余票为19
1号窗口完成售票,余票为18
1号窗口完成售票,余票为17
1号窗口完成售票,余票为16
1号窗口完成售票,余票为15
2号窗口完成售票,余票为14
2号窗口完成售票,余票为13
2号窗口完成售票,余票为12
3号窗口完成售票,余票为11
3号窗口完成售票,余票为10
3号窗口完成售票,余票为9
1号窗口完成售票,余票为8
1号窗口完成售票,余票为7
1号窗口完成售票,余票为6
1号窗口完成售票,余票为5
2号窗口完成售票,余票为4
3号窗口完成售票,余票为3
1号窗口完成售票,余票为2
2号窗口完成售票,余票为1
2号窗口完成售票,余票为0
更多java相关内容感兴趣的读者可查看本站专题:《Java进程与线程操作技巧总结》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。