首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 互联网 >

锁的中止

2012-11-23 
锁的中断别人的代码,那过来改改package com.jdk.api.demoimport java.util.concurrent.TimeUnitimport j

锁的中断
别人的代码,那过来改改

package com.jdk.api.demo;
import java.util.concurrent.TimeUnit; 
import java.util.concurrent.locks.Lock; 
import java.util.concurrent.locks.ReentrantLock; 

public class LockDemo {
public static void main(String[] args){ 
 
 
     /*   Thread i2 = new Thread(new RunIt3()); 
         i2.start(); 
        i2.interrupt();  */

Thread i2 = new Thread(new Synn()); 
         i2.start(); 
        i2.interrupt();

    } 
}
// java.lang.InterruptedException: sleep interrupted
class Synn implements Runnable{

public synchronized void synn_method()
{

try {
Thread.sleep(1000000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

@Override
public void run() {
synn_method();

}



}


/**
* lockInterruptibly 与 lock比较区别在于
   lockInterruptibly 优先考虑响应中断,而不是响应锁定的普通获取或重入获取
* @author aircoder
*
*/
class RunIt3 implements Runnable{ 
 
    private static Lock lock = new ReentrantLock(); 
    public void run(){ 
        try{ 
            //---------------------------------a 
         //   lock.lock();  //代码永远不会结束
            lock.lockInterruptibly();   //代码永远不会结束 在  i2.interrupt(); 
             
              int i=0;
            System.out.println(Thread.currentThread().getName() + " running"); 
           // TimeUnit.SECONDS.sleep(20); 
            while(i==0){
           
            }
            lock.unlock(); 
            System.out.println(Thread.currentThread().getName() + " finished"); 
        } 
        catch (Exception e){ 
        e.printStackTrace();
            System.out.println(Thread.currentThread().getName() + " interrupted"); 
 
        } 
 
    } 

热点排行