Java中的并发是指在多核CPU或者多CPU系统上同时进行的多个线程或进程之间的协调和调度。Java中提供了丰富的工具和API来支持并发编程,如线程、锁、原子变量、并发集合、线程池等。
在Java中可以通过实现Runnable或继承Thread类来创建新的线程,如下所示:
public class MyThread extends Thread {
@Override
public void run() {
// 线程执行的方法体
}
}
public class MyRunnable implements Runnable {
@Override
public void run() {
// 线程执行的方法体
}
}
// 创建线程对象并启动线程
MyThread myThread = new MyThread();
myThread.start();
MyRunnable myRunnable = new MyRunnable();
Thread thread = new Thread(myRunnable);
thread.start();
Java中的锁是用来保护临界区的数据在多个线程之间的访问的可见性和一致性。Java中提供了synchronized关键字和锁对象来实现临界区的同步,如下所示:
public class MyCounter {
private int count;
private final Object lock = new Object();
public void increment() {
synchronized (lock) {
count++;
}
}
public int getCount() {
return count;
}
}
Java中的原子变量是线程安全的、不可分割的基本操作,常用的包括AtomicInteger、AtomicLong、AtomicBoolean等,如下所示:
public class MyCounter {
private AtomicInteger count = new AtomicInteger();
public void increment() {
count.incrementAndGet();
}
public int getCount() {
return count.get();
}
}
Java中的并发集合是线程安全的集合容器,提供了并发访问的接口,如ConcurrentHashMap、ConcurrentLinkedQueue、CopyOnWriteArrayList等,如下所示:
ConcurrentHashMap<String, String> map = new ConcurrentHashMap<>();
map.put("key", "value");
Java中的线程池是用于管理和调度线程的对象池,通过线程池可以避免频繁的创建和销毁线程,提高应用的性能和可伸缩性,如下所示:
ExecutorService executorService = Executors.newFixedThreadPool(10);
executorService.execute(new Runnable() {
@Override
public void run() {
// 线程执行的方法体
}
});
综上所述,Java中的并发包含多线程、锁、原子变量、并发集合和线程池等,通过这些工具和API可以实现多个线程之间的协调和调度,提高应用的性能和可伸缩性。