Java中的并发编程:java.util.concurrent包详解



Java中的并发编程:java.util.concurrent包详解



一、并发编程简介


随着计算机技术的不断发展,多核CPU已经成为了电脑硬件的主流趋势,多核CPU的出现也使得并发编程变得越来越重要。并发编程是指在一个计算机系统中,有多个执行线程同时执行任务的编程方式。

Java作为一门高级编程语言,自然也提供了完善的并发编程机制,其中就包括java.util.concurrent包。



二、java.util.concurrent包


java.util.concurrent包是Java中用于支持并发编程的一个重要包,提供了丰富的类和接口,可以方便地实现并发编程。



1. ThreadPoolExecutor类


ThreadPoolExecutor类是Java中用于实现线程池的一个类,可以方便地管理并发任务的执行。

示例代码:

public class ThreadPoolTest {
    public static void main(String[] args) {
        // 创建线程池
        ExecutorService pool = Executors.newFixedThreadPool(5);
        // 提交任务
        for (int i = 0; i < 10; i++) {
            pool.execute(new MyTask());
        }
        // 关闭线程池
        pool.shutdown();
    }
}

class MyTask implements Runnable {
    @Override
    public void run() {
        System.out.println("线程" + Thread.currentThread().getName() + "正在执行...");
    }
}



2. Semaphore类


Semaphore类是Java中用于控制并发访问的一个类,可以控制同时访问某个资源的线程数。

示例代码:

public class SemaphoreTest {
    public static void main(String[] args) {
        // 创建Semaphore对象
        Semaphore semaphore = new Semaphore(3);
        // 创建10个线程
        for (int i = 0; i < 10; i++) {
            new MyThread(semaphore, i + 1).start();
        }
    }
}

class MyThread extends Thread {
    private Semaphore semaphore;
    private int tid;
    public MyThread(Semaphore semaphore, int tid) {
        this.semaphore = semaphore;
        this.tid = tid;
    }
    @Override
    public void run() {
        try {
            // 尝试获取许可
            semaphore.acquire();
            System.out.println("线程" + tid + "获取了许可");
            // 休眠1秒
            Thread.sleep(1000);
            System.out.println("线程" + tid + "释放了许可");
            // 释放许可
            semaphore.release();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}



三、总结


本文介绍了Java中的并发编程,详解了java.util.concurrent包的相关函数用法,并提供了通俗易懂的代码案例。对于Java并发编程感兴趣的读者,可以参考本文进行深入学习。

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