public class Thread13 {
public static void main(String[] args) {
final Thread13 test=new Thread13();
new Thread(){
public void run(){
while(true){
test.printname("aaaaaaaaa");
}
}
}.start();
new Thread(){
public void run(){
while(true){
test.printname("bbbbbbbb");
}
}
}.start();
}
Lock lock=new ReentrantLock();
public void printname(String name){
int len=name.length();
// synchronized(Thread13.class){
lock.lock();//如果锁定不可用,出于线程调度目的,将禁用当前线程,并且在获得锁定之前,该线程将一直处于休眠状态。
try{
for(int i=0;i<len;i++){
System.out.print(name.charAt(i));
}
System.out.println();
}finally{
/*防止for循环里面会出现异常,故先捕获,以免在锁没有释放
锁定和取消锁定出现在不同作用范围中时,必须谨慎地确保保持锁定时所执行的所有代码用
try-finally 或 try-catch 加以保护,以确保在必要时释放锁定。*/
lock.unlock();
}
// }
}
}
Lock的简单运用
最新推荐文章于 2021-03-31 08:02:34 发布