Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

java并发

作者:顺我者未必能活   发布日期:2026-02-18   浏览:30

// Java并发编程示例:使用线程和同步块

public class ConcurrentExample {

    // 定义一个共享资源
    private static int sharedResource = 0;

    // 定义一个锁对象,用于同步
    private final Object lock = new Object();

    // 线程任务类
    public static class Task implements Runnable {
        private final String name;
        private final ConcurrentExample example;

        public Task(String name, ConcurrentExample example) {
            this.name = name;
            this.example = example;
        }

        @Override
        public void run() {
            for (int i = 0; i < 5; i++) {
                example.increment();
                System.out.println(name + " incremented the resource to: " + sharedResource);
            }
        }
    }

    // 同步方法,确保同一时间只有一个线程可以访问共享资源
    public void increment() {
        synchronized (lock) {
            sharedResource++;
        }
    }

    public static void main(String[] args) throws InterruptedException {
        ConcurrentExample example = new ConcurrentExample();

        // 创建两个线程,分别执行相同的任务
        Thread thread1 = new Thread(new Task("Thread-1", example));
        Thread thread2 = new Thread(new Task("Thread-2", example));

        // 启动线程
        thread1.start();
        thread2.start();

        // 等待线程结束
        thread1.join();
        thread2.join();

        System.out.println("Final value of shared resource: " + sharedResource);
    }
}

解释说明:

  1. 共享资源sharedResource 是一个静态变量,表示多个线程之间共享的数据。由于它是静态的,所有线程都共享同一个实例。

  2. 锁对象lock 是一个私有对象,用于在 increment 方法中进行同步。通过 synchronized 关键字,确保同一时间只有一个线程能够进入该方法,从而避免了竞态条件(race condition)。

  3. 线程任务Task 类实现了 Runnable 接口,并定义了一个简单的任务:每个线程会循环 5 次,每次调用 increment 方法对共享资源进行递增操作。

  4. 线程启动与等待:在 main 方法中,创建了两个线程并启动它们。使用 join 方法确保主线程等待子线程完成后再继续执行,最后输出共享资源的最终值。

这个例子展示了如何使用 Java 的并发机制来保护共享资源,避免多线程环境下的数据竞争问题。

上一篇:java排序算法

下一篇:java list remove

大家都在看

java url decode

java判断是windows还是linux

java连接数据库的代码

java date类型比较大小

java djl

ubuntu 卸载java

es java api

java list 查找

java 解压rar

java读取excel中的图片

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站