Java中的并发编程详解:线程的创建与安全、锁、并发集合


Java中的并发编程详解:线程的创建与安全、锁、并发集合


1. 线程的创建与安全


1.1 线程的创建

在Java中,线程的创建有两种方式:

1. 继承Thread类,重写run方法,调用start方法启动线程

2. 实现Runnable接口,重写run方法,使用Thread类的构造方法创建线程


示例代码如下:

1. 继承Thread类:
public class MyThread extends Thread {
    @Override
    public void run() {
        // 线程执行代码
    }
}

public class Main {
    public static void main(String[] args) {
        MyThread t = new MyThread();
        t.start();
    }
}
2. 实现Runnable接口:
public class MyRunnable implements Runnable {
    @Override
    public void run() {
        // 线程执行代码
    }
}

public class Main {
    public static void main(String[] args) {
        MyRunnable r = new MyRunnable();
        Thread t = new Thread(r);
        t.start();
    }
}


1.2 线程安全

线程安全是指多个线程同时访问同一个资源时,不会出现数据不一致或者数据污染的情况。

Java中常用的线程安全的方式有:

1. synchronized关键字

2. Lock接口


2. 锁


2.1 synchronized关键字

synchronized关键字可以修饰方法或代码块,保证在同一时间只有一个线程可以进入该方法或代码块。

示例代码如下:

public class MyThread {
    private int count;
    public synchronized void add() {
        count++;
    }
}


2.2 Lock接口

Lock接口是Java提供的一种高级锁机制,相比synchronized关键字,Lock接口提供了更为灵活的锁定方式。

示例代码如下:

public class MyThread {
    private int count;
    private Lock lock = new ReentrantLock();
    public void add() {
        lock.lock();
        try {
            count++;
        } finally {
            lock.unlock();
        }
    }
}


3. 并发集合


3.1 ConcurrentHashMap

ConcurrentHashMap是Java提供的一种高效的线程安全的哈希表实现。

示例代码如下:

Map map = new ConcurrentHashMap<>();


3.2 CopyOnWriteArrayList

CopyOnWriteArrayList是Java提供的一种高效的线程安全的动态数组实现。

示例代码如下:

List list = new CopyOnWriteArrayList<>();


猿教程
请先登录后发表评论
  • 最新评论
  • 总共0条评论