美文网首页
多线程补习笔记1

多线程补习笔记1

作者: 凡尘85 | 来源:发表于2020-08-28 01:19 被阅读0次

    人到中年,职业危机,不得已开始补习java基础知识。
    原本雄心壮志觉得多线程这部分一周就差不多了,结果写了个例子就想不明白了,今天贴出来大家给指点指点吧。
    随后我会把多线程的相关知识从浅入深的写写,如有错误,请多多包涵。

    public class ThreadStudy {
        public static class ShareBean {
            private int abc;
            public int getAbc() {
                return abc;
            }
            public void addOne() {
                String threadName = Thread.currentThread().getName();
                System.out.println("当前线程《" + threadName +"》加一开始:" +abc);
                abc =abc +1;
                System.out.println("当前线程《" + threadName +"》加一结束:" +abc);
            }
        }
    
        public static void main(String[] args)throws InterruptedException {
            ShareBean shareBean =new ShareBean();
            Runnable runnable1 =new Runnable() {
                @Override
                public void run() {
                    shareBean.addOne();
                }
            };
            Runnable runnable2 =new Runnable() {
                @Override
                public void run() {
                    shareBean.addOne();
                }
            };
            for(int i=0;i<10;i++) {
                Thread t1 =new Thread(runnable1);
                t1.setName("a" + i);
                t1.start();
                Thread t2 =new Thread(runnable2);
                t2.setName("b" + i);
                t2.start();
            }
            Thread.sleep(3000);
            System.out.println("多线程情况结果:" + shareBean.getAbc());
        }
    }
    

    下面是一次运行的结果:

    当前线程《a0》加一开始:0
    当前线程《a0》加一结束:1
    当前线程《b1》加一开始:0
    当前线程《b1》加一结束:2
    当前线程《a2》加一开始:0
    当前线程《b0》加一开始:0
    当前线程《a1》加一开始:0
    当前线程《a1》加一结束:5
    当前线程《b0》加一结束:4
    当前线程《a2》加一结束:3
    当前线程《b2》加一开始:2
    当前线程《a3》加一开始:1
    当前线程《a3》加一结束:7
    当前线程《b2》加一结束:6
    当前线程《a5》加一开始:5
    当前线程《a5》加一结束:8
    当前线程《a4》加一开始:7
    当前线程《a4》加一结束:9
    当前线程《b4》加一开始:9
    当前线程《b4》加一结束:10
    当前线程《a8》加一开始:10
    当前线程《a8》加一结束:11
    当前线程《b3》加一开始:11
    当前线程《b3》加一结束:12
    当前线程《a9》加一开始:11
    当前线程《b9》加一开始:12
    当前线程《b9》加一结束:14
    当前线程《a6》加一开始:12
    当前线程《a7》加一开始:14
    当前线程《a7》加一结束:16
    当前线程《b8》加一开始:13
    当前线程《b8》加一结束:17
    当前线程《a9》加一结束:13
    当前线程《b5》加一开始:17
    当前线程《b6》加一开始:16
    当前线程《b6》加一结束:19
    当前线程《b7》加一开始:16
    当前线程《a6》加一结束:15
    当前线程《b7》加一结束:20
    当前线程《b5》加一结束:18
    多线程情况结果:20


    我这里有两个问题:

    1. 按以上运行结果理解,b5线程最后运行结束,按说abc的最终结果应该是20。
    2. b7加一开始时值为16,结束时值为20,中间值不存在,怎么造成的。

    我是灰灰

    相关文章

      网友评论

          本文标题:多线程补习笔记1

          本文链接:https://www.haomeiwen.com/subject/lirksktx.html