java多线程编程书籍_Java多线程技能(读书笔记:《Java多线程编程核心技术》)...

本文介绍了Java中线程的基本概念,包括线程的状态、创建方式(继承Thread类与实现Runnable、Callable接口)、线程的启动与中断方法等。还讨论了线程中断的处理方式以及线程停止的不同方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一个程序的执行代表一个进程,线程是一个进程里面的独立运行的子任务。

线程各个状态,图片截取自《Java多线程编程核心技术》。

400b6240ae2c0965d0fba1d7f7d3a536.png

(start顺序不代表运行启动顺序,从上图可以看出start后线程只是编程了就绪状态,具体执行顺序要看cpu分配)

线程的两种实现方式:

继承Thread类:

1 public class MyThread extendsThread {2 @Override3 public voidrun() {4 super.run();5 System.out.println();6 }7 }8

9 MyThread thread = newMyThread();10 thread.start();

注意对于同一个线程,多次调用它的start方法,会出现异常IllegalThreadStateException。

实现接口的方式(Runnable、Callable):

1 pulbic class MyRunnable implementsRunnable {2

3 @Override4

5 public voidrun() {6 System.out.println();7 }8

9 }10

11 Runnable runnable = newMyRunnable();12 Thread thread = newThread(runnable);13 thread.start();

如果使用实现带有返回值的Callable接口,需要使用FutureTask。

1 public class MyCallable implements Callable{2 @Override3 public String call() throwsException {4 return "call";5 }6 }7

8 MyCallable myCallable = newMyCallable();9 FutureTask futureTask = new FutureTask<>(myCallable);10 Thread thread = newThread(futureTask);11 thread.start();12

13 String result = future.get(); //阻塞,直到出现运行结果并返回

由于Java不支持多继承的方式,为了尽量改变这种局限性,推荐使用实现接口的方式。

判断线程是否终止的方法:

public static boolean interrupted();

public boolean isInterrupted();

测试线程是否已经中断(可以判断当前线程Thread.interrupted()),interrupted方法会清除线程的终止状态。isInterrupted方法,不清除状态。

使用interrupt()后,处于停止状态的线程,不一定会直接退出。

interrupt方法只是修改线程处于停止状态,退出线程需要结合异常或者return使用。

(线程停止的方法还有stop方法,但是被废弃了,由于stop方法会让线程暴力停止,可能导致不完整的残废数据。)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值