线程的创建方式
Java 中创建线程有 3 种核心方式:
继承Thread类
实现Runnable接口
实现Callable接口
线程的几种状态:
Java 线程有 6 种状态(定义在Thread.State枚举中):
NEW:线程已创建但未调用start()。
RUNNABLE:线程处于 “可运行” 状态(正在 CPU 执行,或等待 CPU 调度)。
BLOCKED:线程等待获取锁(如synchronized锁被其他线程占用)。
WAITING:线程无限期等待(如调用Object.wait()、Thread.join())。
TIMED_WAITING:线程限时等待(如调用Thread.sleep(1000)、Object.wait(1000))。
TERMINATED:线程已执行完毕(run()方法结束)。
线程的生命周期:
线程的生命周期是从 “创建” 到 “终止” 的状态流转过程:NEW → 调用start() → RUNNABLE → (执行 / 等待)→ BLOCKED/WAITING/TIMED_WAITING → (重新可运行)→ RUNNABLE → run()执行完毕 → TERMINATED
count++是非线程安全
压缩流和解压缩流:
- 压缩流:
将数据压缩成更小的字节序列(节省存储空间 / 传输带宽)。 - 解压缩流:
将压缩后的字节序列恢复成原始数据。
io流总结:
Lambda 表达式:
核心作用是:简化代码,用更简洁的语法替代匿名内部类,尤其适合处理集合遍历、排序、过滤等场景。
基本格式:(参数列表) -> { 方法体 }
参数类型可省略(编译器自动推断);
若只有一个参数,() 可省略;
若方法体只有一行代码,{} 和 return 可同时省略;
若方法体无返回值(比如 void 方法),直接写逻辑即可。
代码示例:
// 传统匿名内部类写法
new Thread(new Runnable() {
@Override
public void run() {
System.out.println(“匿名内部类执行”);
}
}).start();
// Lambda 写法(简化后)
new Thread(() -> System.out.println(“Lambda 执行”)).start();