《JAVA八股真解》三、线程与锁

#JAVA##JAVA面经##JAVA内推#

1. 线程的状态

alt

Java中的线程生命周期由Thread类的getState()方法返回,共有六种状态:

状态 说明
NEW(新建) 线程刚被创建但尚未启动,处于初始状态。
RUNNABLE(运行中) 线程已启动并正在执行或准备执行任务。此状态包括“就绪”和“运行”两个阶段,取决于是否获取到CPU时间片。
BLOCKED(阻塞) 线程因等待锁而暂停执行,例如在synchronized代码块中无法获得锁时进入该状态。
WAITING(等待) 线程主动调用wait()join()LockSupport.park()等方法后进入无限期等待状态,直到被其他线程唤醒。
TIMED_WAITING(计时等待) 类似于WAITING,但等待时间有限,如调用sleep(long)wait(long)join(long)等方法后进入该状态。
TERMINATED(终止) 线程已完成执行,退出运行状态。

注意:线程从一个状态转换到另一个状态的过程是自动完成的,开发人员通常无需手动干预。

2. 创建线程的方式

Java提供了多种创建线程的方法,常见的有以下几种:

(1)继承Thread

public class MyThread extends Thread {
    @Override
    public void run() {
        System.out.println("Thread running!");
    }
}

// 使用
MyThread thread = new MyThread();
thread.start();

(2)实现Runnable接口

public class MyRunnable implements Runnable {
    @Override
    public void run() {
        System.out.println("Thread running!");
    }
}

// 使用
Thread thread = new Thread(new MyRunnable());
thread.start();

(3)使用内部类

public class Main {
    public static void main(String[] args) {
        Thread thread = new Thread() {
            @Override
            public void run() {
                System.out.println("Thread running!");
            }
        };
        thread.start();
    }
}

(4)使用Lambda表达式(JDK 8+)

public class Main {
    public static void main(String[] args) {
        Thread thread = new Thread(() -> System.out.println("Thread running!"));
        thread.start();
    }
}

推荐:优先使用RunnableCallable接口,避免继承带来的单继承限制。

3. 线程池核心参数

线程池是管理线程资源的重要工具,通过复用线程减少创建开销,提升系统性能。ThreadPoolExecutor是线程池的核心实现类。

ThreadPoolExecutor(
    int corePoolSize,           // 核心线程数
    int maximumPoolSize,        // 最大线程数
    long keepAliveTime,         // 空闲线程存活时间
    TimeUnit unit,              // 时间单位
    BlockingQueue<Runnable> workQueue, // 工作队列
    ThreadFactory threadFactory, // 线程工厂
    RejectedExecutionHandler handler // 拒绝策略
)

参数详解:

  • corePoolSize:核心线程数,即使空闲也不会被回收。

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

本专栏在精不在多,内容分为八股文、大厂真实面经,面试通过后将offer和面试题私发给我,可退还专栏的收益部分费用。欢迎大家共建专栏

全部评论
接好运
点赞 回复 分享
发布于 03-07 12:59 广东
专栏目录https://www.nowcoder.com/share/jump/1772859327707
点赞 回复 分享
发布于 03-07 12:59 广东
本专栏在精不在多,内容分为八股文、大厂真实面经,面试通过后将offer和面试题私发给我,可退还专栏的收益部分费用。欢迎大家共建专栏。
点赞 回复 分享
发布于 03-06 15:52 广东

相关推荐

点赞 评论 收藏
分享
评论
3
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务