Thread共享数据,线程安全测试、不安全测试

本文通过创建继承Thread的类并进行线程安全和不安全测试,展示了线程同步的重要性。测试结果显示,在未加锁的情况下,多线程访问共享数据可能导致不安全的结果,而加锁能确保数据的正确性。

1.创建类继承Thread 

public class MyThredUnsafe extends Thread{
    private int count=5;

    /**
     * 线程不安全
     */
    @Override
    public void run(){
        super.run();
        count--;
        System.out.println(Thread.currentThread().getName()+"计算count="+count);
    }

    /**
     * 线程安全
     */
   /* @Override
    public synchronized void run(){
        super.run();
        count--;
        System.out.println(Thread.currentThread().getName()+"计算count="+count);
    }*/
}

2.测试方法

public class MainTest {
    public static void main(String[] args) {
        //线程不安全,共享数据
        MyThredUnsafe myThredUnsafe=new MyThredUnsafe();
        Thread threadA=new Thread(myThredUnsafe,"A");
        Thread threadB=new Thread(myThredUnsafe,"B");
        Thread threadC=new Thread(myThredUnsafe,"C");
        Thread threadD=new Thread(myThredUnsafe,"D");
        Thread threadE=new Thread(myThredUnsafe,"E");
        threadA.start();
        threadB.start();
        threadC.start();
        threadD.start();
        threadE.start();

    }
}

测试结果

4.线程安全需加锁 

     /**
     * 线程安全
     */
   @Override
    public synchronized void run(){
        super.run();
        count--;
        System.out.println(Thread.currentThread().getName()+"计算count="+count);
    }

测试结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值