Java面试题之多线程 请说出与线程同步以及线程调度相关的方法。
在Java中,线程同步和线程调度是多线程编程中非常重要的概念。以下是与线程同步和线程调度相关的一些方法和概念:
synchronized关键字:
public synchronized void synchronizedMethod() {
// 线程安全的代码
}
Lock接口:
java.util.concurrent.locks.Lock
接口提供了比synchronized
更灵活的锁机制。ReentrantLock
。Lock lock = new ReentrantLock();
lock.lock();
try {
// 线程安全的代码
} finally {
lock.unlock();
}
Condition接口:
Lock
一起使用,提供了更灵活的线程间通信机制。Condition condition = lock.newCondition();
lock.lock();
try {
// 等待条件
condition.await();
// 处理条件满足后的逻辑
} finally {
lock.unlock();
}
volatile关键字:
private volatile boolean flag = false;
Thread.join():
thread.join();
CountDownLatch:
CountDownLatch latch = new CountDownLatch(1);
latch.await(); // 等待
latch.countDown(); // 计数减一
CyclicBarrier:
CyclicBarrier barrier = new CyclicBarrier(3);
barrier.await(); // 等待其他线程
Thread.sleep(long millis):
Thread.sleep(1000); // 暂停1秒
Thread.yield():
Thread.yield();
Thread.setPriority(int newPriority):
thread.setPriority(Thread.MAX_PRIORITY);
Thread.getPriority():
int priority = thread.getPriority();
Executor框架:
java.util.concurrent
包中的Executor框架提供了线程池和任务调度的功能。ExecutorService executor = Executors.newFixedThreadPool(10);
executor.submit(() -> {
// 任务代码
});
ScheduledExecutorService:
ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
scheduler.schedule(() -> {
// 定时任务
}, 5, TimeUnit.SECONDS);
这些方法和概念是Java多线程编程中常用的工具,理解它们的使用场景和原理对于编写高效、安全的多线程程序至关重要。