2026年线程面试 | Java 8、21、25 线程入门讲解
Java 8、21、25 线程入门讲解线程入门Java 8、21、25 线程入门讲解一、先认识三个核心概念1. Thread2. Runnable3. ExecutorService二、Java 8 里的线程写法1. 继承 Thread2. 实现 Runnable这份文档把“线程怎么创建、线程池怎么用、Java 8 / 21 / 25 有什么差异”放在一起讲。重点是先弄清楚概念再看代码。一、先认识三个核心概念1. ThreadThread表示一条执行路径也就是“线程对象”。2. RunnableRunnable表示“要执行的任务”它本身不是线程。3. ExecutorServiceExecutorService表示“任务执行器”也就是线程池一类的统一入口。一句话总结Thread负责“跑”Runnable负责“干什么”ExecutorService负责“把任务交给合适的线程去跑”二、Java 8 里的线程写法Java 8 时代最常见的还是传统平台线程。核心方式有三种继承Thread实现Runnable使用线程池ExecutorService1. 继承Thread这种方式是最直观的但业务里一般不优先推荐。publicclassMyThreadextendsThread{Overridepublicvoidrun(){try{while(!Thread.currentThread().isInterrupted()){Thread.sleep(1000);System.out.println(线程名Thread.currentThread().getName(), 线程idThread.currentThread().getId());}}catch(InterruptedExceptione){Thread.currentThread().interrupt();}}}publicclassThreadTest1{publicstaticvoidmain(String[]args){MyThreadthreadnewMyThread();thread.start();}}说明start()才会开启新线程直接调用run()只是普通方法调用不会新开线程getId()在 Java 19 以后已不推荐Java 21 / 25 推荐用threadId()2. 实现Runnable这是更常见的写法任务和线程解耦更清楚。publicclassThreadTest2{publicstaticvoidmain(String[]args){ThreadthreadnewThread(newRunnable(){Overridepublicvoidrun(){try{while(!Thread.currentThread().isInterrupted()){Thread.sleep(1000);System.out.println(线程名Thread.currentThread().getName(), 线程idThread.currentThread().getId());}}catch(InterruptedExceptione){Thread.currentThread().interrupt();}}},worker-runnable);thread.start();}