public static void sleep(long millis)
throws InterruptedException在指定的毫秒数内让当前正在执行的线程休眠(暂停执行),此 *** 作受到系统计时器和调度程序精度和准确性的影响。该线程不丢失任何监视器的所属权。 参数:
millis - 以毫秒为单位的休眠时间。
抛出:
InterruptedException - 如果任何线程中断了当前线程。当抛出该异常时,当前线程的中断状态 被清除。啦!
class MyThread implements Runnable {
@Override
public void run() {
Systemoutprintln("1、进入run()方法休眠");
try {
Systemoutprintln("2、线程休眠20秒");
Threadsleep(20000);//这里休眠20秒
Systemoutprintln("3、线程正常休眠完毕");
} catch (InterruptedException e) {
Systemoutprintln("4、线程发生异常休眠被中断");
return;//返回方法调用处
}
Systemoutprintln("5、线程正常结束run()方法体");
}
}
public class InterruptDemo {
public static void main(String[] args) {
MyThread mt = new MyThread();
Thread t = new Thread(mt,"线程A");
tstart();//启动线程
//========================================================
try {
Threadsleep(2000); //保证线程至少执行2秒
} catch (InterruptedException e) {
eprintStackTrace();
}
//========================================================
tinterrupt();//中断线程
}
}
另外,团IDC网上有许多产品团购,便宜有口碑Java里面是通过对象锁来实现线程临界段,synchronized关键词比如,Class A 有 public synchronized void dosomething(){}那么对于A的一个实例a,同一时间内仅有一个线程在执行adosomething(),其他线程需要等到锁被此线程释放后(也就是adosomething()执行完以后)才能运行adosomething()或者synchronized(someInstance){。。。代码段}每个线程执行到第一行时,都要到someInstance去申请一把锁,这个过程会是一个阻塞过程(我是这么理解的),获得锁以后才能执行后续代码段,确保代码段里所涉及的变量在同一时间仅被一个线程 *** 作
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)