1. Thread.sleep方法
sleep(long)
方法挂起当前线程,直到一段时间后再次进入等待状态。
public class ThreadSleep extends Thread {
@Override
public void run() {
System.out.println("ThreadSleep begin " + System.currentTimeMillis());
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
}
System.out.println("ThreadSleep end " + System.currentTimeMillis());
}
public static void main(String[] args) {
new ThreadSleep().start();
}
}
输出
2. sleep方法与锁对象
sleep(long)
方法并不会放弃锁对象。
public class ThreadSleepLock extends Thread {
Object lock;
public ThreadSleepLock(Object lock) {
this.lock = lock;
}
@Override
public void run() {
synchronized (lock) {
System.out.println("ThreadSleepLock begin " + System.currentTimeMillis());
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
}
System.out.println("ThreadSleepLock end " + System.currentTimeMillis());
}
}
public static void main(String[] args) {
Object lock = new Object();
new ThreadSleepLock(lock).start();
try {
Thread.sleep(100);
} catch (InterruptedException e) {
}
synchronized (lock) {
System.out.println("main end " + System.currentTimeMillis());
}
}
}
输出
3. sleep方法与interrupt方法
如果线程在挂起状态,调用线程的interrupt()
方法会发生InterruptedException
异常。
public class ThreadSleepInterrupt extends Thread {
@Override
public void run() {
System.out.println("ThreadSleepInterrupt begin " + System.currentTimeMillis());
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("ThreadSleepInterrupt end " + System.currentTimeMillis());
}
public static void main(String[] args) {
Thread t = new ThreadSleepInterrupt();
t.start();
try {
Thread.sleep(100);
} catch (InterruptedException e) {
}
t.interrupt();
}
}
输出
相关文章
Java Thread.wait和Thread.notify方法
Java Thread.join方法
Java Thread.sleep方法
Java Thread.Interrupt方法
Java Lock对象