- JDK5新特性Lock锁
JDK5新的特性: java.util.concurrent.locks包.定义了接口Lock.
Lock接口替代了synch;onized,可以更加灵活
●Lock接口的方法
。void lock()获取锁
。void unlock()释放锁
●Lock接口的实现类ReentrantLock
package com.sdjzu.thread4;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
public class Ticket implements Runnable{
private int ticket=100;
private Lock lock=new ReentrantLock();
@Override
public void run() {
while(true){
sall();}
}
public void sall(){
lock.lock();
try{
Thread.sleep(100);
}catch (Exception e){
}
if(ticket>0){
System.out.println(Thread.currentThread().getName()+"第"+ticket+"票");
ticket--;
}
lock.unlock();
}
}
package com.sdjzu.thread4;
public class TicketTest {
public static void main(String[] args) {
Ticket ticket= new Ticket();
Thread t1=new Thread(ticket);
Thread t2=new Thread(ticket);
Thread t3=new Thread(ticket);
t1.start();
t2.start();
t3.start();
}
}
D:\developertool\Java\jdk1.8.0\bin\java.exe "-javaagent:D:\developertool\Java\IntelliJ IDEA 2021.2.2\lib\idea_rt.jar=56641:D:\developertool\Java\IntelliJ IDEA 2021.2.2\bin" -Dfile.encoding=UTF-8 -classpath D:\developertool\Java\jdk1.8.0\jre\lib\charsets.jar;D:\developertool\Java\jdk1.8.0\jre\lib\deploy.jar;D:\developertool\Java\jdk1.8.0\jre\lib\ext\access-bridge-64.jar;D:\developertool\Java\jdk1.8.0\jre\lib\ext\cldrdata.jar;D:\developertool\Java\jdk1.8.0\jre\lib\ext\dnsns.jar;D:\developertool\Java\jdk1.8.0\jre\lib\ext\jaccess.jar;D:\developertool\Java\jdk1.8.0\jre\lib\ext\jfxrt.jar;D:\developertool\Java\jdk1.8.0\jre\lib\ext\localedata.jar;D:\developertool\Java\jdk1.8.0\jre\lib\ext\nashorn.jar;D:\developertool\Java\jdk1.8.0\jre\lib\ext\sunec.jar;D:\developertool\Java\jdk1.8.0\jre\lib\ext\sunjce_provider.jar;D:\developertool\Java\jdk1.8.0\jre\lib\ext\sunmscapi.jar;D:\developertool\Java\jdk1.8.0\jre\lib\ext\sunpkcs11.jar;D:\developertool\Java\jdk1.8.0\jre\lib\ext\zipfs.jar;D:\developertool\Java\jdk1.8.0\jre\lib\javaws.jar;D:\developertool\Java\jdk1.8.0\jre\lib\jce.jar;D:\developertool\Java\jdk1.8.0\jre\lib\jfr.jar;D:\developertool\Java\jdk1.8.0\jre\lib\jfxswt.jar;D:\developertool\Java\jdk1.8.0\jre\lib\jsse.jar;D:\developertool\Java\jdk1.8.0\jre\lib\management-agent.jar;D:\developertool\Java\jdk1.8.0\jre\lib\plugin.jar;D:\developertool\Java\jdk1.8.0\jre\lib\resources.jar;D:\developertool\Java\jdk1.8.0\jre\lib\rt.jar;D:\developertool\Java\idea202122space\JAVAStage\out\production\module11-thread com.sdjzu.thread4.TicketTest
Thread-0第100票
Thread-0第99票
Thread-0第98票
Thread-0第97票
Thread-0第96票
Thread-0第95票
Thread-0第94票
Thread-0第93票
Thread-0第92票
Thread-0第91票
Thread-0第90票
Thread-0第89票
Thread-0第88票
Thread-0第87票
Thread-0第86票
Thread-0第85票
Thread-0第84票
Thread-0第83票
Thread-0第82票
Thread-0第81票
Thread-0第80票
Thread-0第79票
Thread-0第78票
Thread-0第77票
Thread-0第76票
Thread-0第75票
Thread-2第74票
Thread-2第73票
Thread-2第72票
Thread-2第71票
Thread-2第70票
Thread-2第69票
Thread-2第68票
Thread-2第67票
Thread-2第66票
Thread-2第65票
Thread-2第64票
Thread-2第63票
Thread-2第62票
Thread-2第61票
Thread-2第60票
Thread-2第59票
Thread-2第58票
Thread-2第57票
Thread-2第56票
Thread-2第55票
Thread-2第54票
Thread-2第53票
Thread-2第52票
Thread-2第51票
Thread-2第50票
Thread-2第49票
Thread-2第48票
Thread-2第47票
Thread-2第46票
Thread-2第45票
Thread-2第44票
Thread-2第43票
Thread-1第42票
Thread-1第41票
Thread-1第40票
Thread-1第39票
Thread-1第38票
Thread-0第37票
Thread-0第36票
Thread-0第35票
Thread-0第34票
Thread-2第33票
Thread-1第32票
Thread-1第31票
Thread-1第30票
Thread-1第29票
Thread-1第28票
Thread-1第27票
Thread-1第26票
Thread-1第25票
Thread-1第24票
Thread-1第23票
Thread-1第22票
Thread-1第21票
Thread-1第20票
Thread-1第19票
Thread-1第18票
Thread-1第17票
Thread-1第16票
Thread-1第15票
Thread-0第14票
Thread-0第13票
Thread-0第12票
Thread-0第11票
Thread-0第10票
Thread-0第9票
Thread-2第8票
Thread-2第7票
Thread-2第6票
Thread-2第5票
Thread-2第4票
Thread-2第3票
Thread-2第2票
Thread-2第1票