【JAVAEE学习】探究Java中多线程的使用和重点及考点
在Java中,多线程的使用和理解是非常重要的,它能够帮助我们更好地利用系统资源,提高程序的运行效率。以下是一些关键点和考点:
创建线程:
- 继承Thread类
- 实现Runnable接口
- 使用FutureTask类
- 使用线程池
线程状态:
- 新建状态
- 就绪状态
- 运行状态
- 阻塞状态
- 死亡状态
线程控制:
- start(): 启动线程
- run(): 定义线程运行的操作
- sleep(long millis): 在指定的毫秒数内让当前正在执行的线程休眠(暂停执行)
- join(): 等待这个线程死亡
- yield(): 暂停当前正在执行的线程,把执行机会让给优先级相同或更高的线程
- setPriority(int newPriority): 更改线程的优先级
- setDaemon(boolean on): 将此线程标记为守护线程,当运行的唯一线程是守护线程时,Java虚拟机将退出
线程同步:
- 同步代码块:synchronized (obj)
- 同步方法:public synchronized void method()
- 使用volatile关键字:用于变量的同步
- 使用ReentrantLock类:可重入锁
线程通信:
- wait(): 导致当前线程等待,直到其他线程调用此对象的 notify() 方法或 notifyAll() 方法
- notify(): 唤醒在此对象监视器上等待的单个线程
- notifyAll(): 唤醒在此对象监视器上等待的所有线程
死锁:
- 两个或多个线程在等待对方释放资源时,若无外力作用,它们都无法向前推进的现象
线程组:
- ThreadGroup类,可以方便地对线程进行分组管理
线程池:
- 使用Executor框架创建和管理线程池
- 常用线程池:FixedThreadPool、CachedThreadPool、SingleThreadExecutor、ScheduledThreadPoolExecutor
Lock接口和Condition接口:
- Lock接口提供了比使用synchronized方法和语句可获得的更广泛的锁定操作
- Condition接口则是特定的条件(Condition)并且与锁关联
Atomic类:
- Java.util.concurrent.atomic包下的类,如AtomicInteger,AtomicLong等,提供了一种用于单个值的线程安全更新操作。
以下是一个简单的多线程示例代码:
public class MultiThreadingExample {
public static void main(String[] args) {
Thread t1 = new Thread(new Runnable() {
public void run() {
System.out.println("线程1正在运行...");
}
});
Thread t2 = new Thread(new Runnable() {
public void run() {
System.out.println("线程2正在运行...");
}
});
t1.start();
t2.start();
}
}
在这个例子中,我们创建了两个线程,每个线程打印一句话,然后启动它们。这是多线程使用的一个简单入门示例。
评论已关闭