Java线程
约 612 字大约 2 分钟
2025-09-06
一、线程
线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。
一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。
1、线程的状态:

- 新建:线程被创建后,还没有调用start()方法,线程就进入了新建状态。
- 就绪:线程调用了start()方法,线程就进入了就绪状态。
- 运行:线程获得了CPU时间片,线程就进入了运行状态。
- 阻塞:线程因为某种原因放弃了CPU时间片,线程就进入了阻塞状态。
- 死亡:线程执行完毕,线程就进入了死亡状态。
2、创建线程
Java中有三种方式创建基本线程。
继承Thread类:线程的执行代码写在run()方法中。
public class MyThread extends Thread { @Override public void run() { // 线程执行的代码 } } // 创建线程 MyThread myThread = new MyThread(); // 启动线程 myThread.start();实现Runnable接口:线程的执行代码写在run()方法中。
public class MyRunnable implements Runnable { @Override public void run() { // 线程执行的代码 } } // 创建线程 Thread thread = new Thread(new MyRunnable()); // 启动线程 thread.start();实现Callable接口:线程的执行代码写在call()方法中。
public class MyCallable implements Callable<String> { @Override public String call() throws Exception { // 线程执行的代码 return "线程执行的结果"; } } // 创建线程执行器 ExecutorService executorService = Executors.newSingleThreadExecutor(); // 添加任务 Future<String> future = executor.submit(new MyCallable()); // 等待任务执行完成,并获取结果 String result = future.get(); // 关闭线程执行器 executorService.shutdown();注意:使用Callable接口创建线程时,需要使用线程执行器来执行线程。
3、总结
- 上面介绍的是单线程的创建,如果我们在系统中只是临时的将任务放在异步中执行,可以采用上面的方式来实现。 例如:服务实现多个监听端口等。
- 但是创建线程非常消耗资源,如果每次都创建线程,则会很耗费CPU资源,有没有什么方式可以提前创建好多个线程, 在需要的时候拿出来直接使用,使用完再放回去,下次使用,再拿出来使用。
