多线程-JAVA实验

本文介绍了通过Java实现的多线程实验,详细描述了如何使用多线程对计数器进行并发加1操作,以及如何确保线程安全。实验旨在提升对多线程编程的理解和实践能力。
摘要由CSDN通过智能技术生成

一、实验目的和要求

1.实验目的

通过实验,熟掌握java语言程序设计的基本方法。

掌握多线程编程的特点;了解线程的调度和执行过程;掌握资源共享访问的实现方法。

2.实验内容

使用两个线程同时对计数器加1操作,求出结果

二、源代码

public class MultiThreadDemo {
    public static void main(String[] args) {
        Counter counter = new Counter();
        // 创建两个线程分别对计数器进行加1操作
        Thread t1 = new Thread(() -> {
            for (int i = 0; i < 10000; i++) {
                counter.increment();
            }
        });
        Thread t2 = new Thread(() -> {
            for (int i = 0; i < 10000; i++) {
                counter.increment();
            }
        });
        // 启动两个线程
        t1.start();
        t2.start();
        // 等待两个线程结束
        try {
            t1.join();
            t2.join();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        // 打印出最终计数器的值
        System.out.println("Counter value: " + counter.getCount());
    }
    // 计数器类,实现了资源共享访问的方式
    public static class Counter {
        private int count = 0;

        public synchronized void increment() {
            count++;
        }
        public int getCount() {
            return count;
        }
    }
}

三、运行结果

Counter value: 20000

四、心得体会

   本人对多线程的知识点的掌握度一直处于一般状态,所以选择了一个比较初级的实验项目。

    本实验中,我的实验思路是:创建一个计数器类Counter,其中包含了一个整型变量count,用于记录计数器的值。为了实现资源的共享访问,在increment()方法上加了synchronized关键字,使得在同一时刻只有一个线程能够访问该方法。在main()函数中,创建了两个线程t1和t2,并分别让它们对计数器进行10000次加1操作。为了让两个线程可以并发执行,我使用了多线程编程的特点,即通过创建多个线程来并行执行任务。使用匿名内部类的方式来创建线程,并在其中实现了对计数器的加1操作。在启动两个线程之后,使用t1.join()和t2.join()方法来等待两个线程执行结束。这是为了保证在计算最终的计数器值时,两个线程已经完成了所有的加1操作。最后,打印出最终的计数器值,可以看到它的值为20000,说明两个线程对计数器进行了并发的加1操作,且通过synchronized关键字实现了对计数器的线程安全访问。

我认为,这个程序虽然不算难,但展示了多线程编程的特点、线程的调度和执行过程,以及资源共享访问的实现方式。在这项实验中,我切实地感受到java程序语言在实际开发中,可以根据具体的需求和场景,灵活运用多线程编程来提高程序的性能和效率。

在此实验中,我有去请教学姐学姐,他们给予了我许多宝贵的意见。总的来说,编写多线程程序需要掌握一定的理论知识和实践经验,需要仔细思考和设计程序的架构和实现方式,同时需要注意代码的正确性、健壮性和性能。对于我们这种初学者来说,需要通过学习相关的书籍、课程和实践经验来提高自己的多线程编程能力。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值