三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

Java 多线程学习

Java 多线程学习

一、什么是多线程?

  1. 进程:操作系统分配资源的最小单位(比如一个运行的 IDEA、浏览器)。
  2. 线程:进程内的执行单元,CPU 调度的最小单位,一个进程可以包含多个线程。
  3. 多线程:让一个程序同时执行多个任务,提高效率、充分利用 CPU。

核心特点:并发(交替执行)并行(同时执行)共享进程资源


二、线程的创建方式(4 种)

1. 继承 Thread 类

java

运行

class MyThread extends Thread { @Override public void run() { System.out.println("线程执行:" + Thread.currentThread().getName()); } } // 使用 new MyThread().start(); // 必须调用 start(),不是 run()

2. 实现 Runnable 接口(推荐)

java

运行

class MyRunnable implements Runnable { @Override public void run() { System.out.println("线程执行:" + Thread.currentThread().getName()); } } // 使用 new Thread(new MyRunnable()).start();

3. 实现 Callable 接口(带返回值 + 抛异常)

java

运行

class MyCallable implements Callable<Integer> { @Override public Integer call() throws Exception { return 100; } } // 使用 FutureTask<Integer> task = new FutureTask<>(new MyCallable()); new Thread(task).start(); // 获取返回值 Integer res = task.get();

4. 线程池(企业开发唯一推荐)

java

运行

ExecutorService pool = Executors.newFixedThreadPool(3); pool.execute(() -> { System.out.println("线程池执行"); }); pool.shutdown();

三、线程的生命周期(6 种状态)

  1. NEW:新建未启动
  2. RUNNABLE:可运行(正在运行 / 等待 CPU)
  3. BLOCKED:阻塞(等待锁)
  4. WAITING:等待(无时限等待)
  5. TIMED_WAITING:定时等待
  6. TERMINATED:终止

记忆口诀:新、可、阻、等、时等、终


四、线程常用 API

java

运行

Thread.currentThread(); // 获取当前线程 thread.start(); // 启动线程 thread.sleep(1000); // 休眠1秒(不释放锁) thread.join(); // 等待该线程执行完 thread.yield(); // 让出CPU执行权 thread.setName(); // 设置线程名 thread.setPriority(1~10);// 设置优先级 thread.interrupt(); // 中断线程(标记) thread.isAlive(); // 是否存活
← 返回列表