线程常见方法
1)public void start()
:启动线程,调用run()
方法。
2)public void run()
:线程的入口点,包含线程要执行的操作。
3)public void stop()
:停止线程的执行。已过时,不推荐使用。
4)public void suspend()
:挂起线程。已过时,不推荐使用。
5)public void resume()
:恢复被挂起的线程。已过时,不推荐使用。
6)public void interrupt()
:中断线程。相当于设置线程的中断状态。(只是改变状态,并不会使线程停止)
-
打断 sleep,wait,join 线程会清空打断状态
public static void main(String[] args) { Thread t = new Thread(() -> { while (true) { try { Thread.sleep(1000); } catch (InterruptedException e) { throw new RuntimeException(e); } } }); t.start(); try { Thread.sleep(1500); } catch (InterruptedException e) { throw new RuntimeException(e); } t.interrupt(); System.out.println(t.isInterrupted()); // false }
-
LockSupport.park()
可用来阻塞当前线程,在其他线程中使用interrupt()
可唤醒该线程public static void main(String[] args) { Thread t = new Thread(() -> { log.info("unpark"); LockSupport.park(); log.info("park"); log.info("{}",Thread.currentThread().isInterrupted()); }); t.start(); try { Thread.sleep(1000); } catch (InterruptedException e) { throw new RuntimeException(e); } t.interrupt(); }
7)public static boolean interrupted()
:测试当前线程是否被中断,并清除中断状态。
8)public boolean isInterrupted()
:测试线程是否被中断。
9)public final void setPriority(int newPriority)
:设置线程的优先级。
10)public final int getPriority()
:返回线程的优先级。
11)public final void setName(String name)
:设置线程的名称。
12)public final String getName()
:返回线程的名称。
13)public final void setDaemon(boolean on)
:设置线程为守护线程或用户线程。
-
守护线程会在所有非守护线程执行完后强制关闭
public static void main(String[] args) { Long start = System.currentTimeMillis(); Thread t = new Thread(() -> { try { Thread.sleep(5000); } catch (InterruptedException e) { throw new RuntimeException(e); } }); t.setDaemon(true); t.start(); try { Thread.sleep(1000); } catch (InterruptedException e) { throw new RuntimeException(e); } Long end = System.currentTimeMillis(); System.out.println(end - start); // 1000 }
14)public final boolean isDaemon()
:判断线程是否为守护线程。
15)public final void join() throws InterruptedException
:等待该线程终止。
16)public final void join(long millis) throws InterruptedException
:等待该线程终止,最多等待指定的毫秒数。
17)public final void sleep(long n) throws InterruptedException
:让当前执行的线 程休眠n毫秒,休眠时让出CPU的时间片给其它 线程
18)public final void yield()
:提示线程调度器,让出当前线程对 CPU的使用,主要是为了测试和调试