美文网首页
Java多线程之——简单多线程:Thread和Runnable

Java多线程之——简单多线程:Thread和Runnable

作者: 帕博雷克斯丢丢 | 来源:发表于2021-06-28 19:01 被阅读0次

    题目:请用多线程写出下面的需求:有一个int类型的变量,用四个线程,其中两个对它做加一的操作,两个对它做减一的操作,最后输出变量结果。

    答案:

    package com.demos.vertx.minirunner;
    
    public class RunThePracticeTwo {
    
        private int count = 0;
    
        public static void main(String[] args) {
            RunThePracticeTwo run = new RunThePracticeTwo();
    
            Thread t1 = new Thread(() -> {
                synchronized (run) {
                    System.out.println(Thread.currentThread().getName() + "--->: " + ++run.count);
                }
            });
    
            Thread t2 = new Thread(() -> {
                synchronized (run) {
                    System.out.println(Thread.currentThread().getName() + "--->: " + ++run.count);
                }
            });
    
            Thread t3 = new Thread(() -> {
                synchronized (run) {
                    System.out.println(Thread.currentThread().getName() + "--->: " + --run.count);
                }
            });
    
            Thread t4 = new Thread(() -> {
                synchronized (run) {
                    System.out.println(Thread.currentThread().getName() + "--->: " + --run.count);
                }
            });
    
            t1.setName("Thread1");
            t2.setName("Thread2");
            t3.setName("Thread3");
            t4.setName("Thread4");
    
            t1.start();
            t2.start();
            t3.start();
            t4.start();
    
            boolean loop = true;
    
            while (loop) {
                if (!(t1.isAlive() || t2.isAlive() || t3.isAlive() || t4.isAlive())) {
                    System.out.println(Thread.currentThread().getName() + "--->: " + run.count);
                    loop = false;
                }
            }
        }
    }
    
    

    输出结果:

    /Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/Home/bin/java -javaagent:/Applications/IntelliJ IDEA.app/Contents/lib/idea_rt.jar=53796:/Applications/IntelliJ IDEA.app/Contents/bin -Dfile.encoding=UTF-8 -classpath /Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/Home/jre/lib/charsets.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/Home/jre/lib/deploy.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/Home/jre/lib/ext/cldrdata.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/Home/jre/lib/ext/dnsns.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/Home/jre/lib/ext/jaccess.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/Home/jre/lib/ext/jfxrt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/Home/jre/lib/ext/localedata.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/Home/jre/lib/ext/nashorn.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/Home/jre/lib/ext/sunec.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/Home/jre/lib/ext/sunjce_provider.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/Home/jre/lib/ext/sunpkcs11.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/Home/jre/lib/ext/zipfs.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/Home/jre/lib/javaws.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/Home/jre/lib/jce.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/Home/jre/lib/jfr.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/Home/jre/lib/jfxswt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/Home/jre/lib/jsse.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/Home/jre/lib/management-agent.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/Home/jre/lib/plugin.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/Home/jre/lib/resources.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/Home/jre/lib/rt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/Home/lib/ant-javafx.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/Home/lib/dt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/Home/lib/javafx-mx.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/Home/lib/jconsole.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/Home/lib/packager.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/Home/lib/sa-jdi.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/Home/lib/tools.jar:/Users/monica/Development/tempspace/laboratory/java/learning/vertx-demo/target/classes:/Users/monica/Development/devenv/building/maven/repository/io/vertx/vertx-core/4.0.3/vertx-core-4.0.3.jar:/Users/monica/Development/devenv/building/maven/repository/io/netty/netty-common/4.1.60.Final/netty-common-4.1.60.Final.jar:/Users/monica/Development/devenv/building/maven/repository/io/netty/netty-buffer/4.1.60.Final/netty-buffer-4.1.60.Final.jar:/Users/monica/Development/devenv/building/maven/repository/io/netty/netty-transport/4.1.60.Final/netty-transport-4.1.60.Final.jar:/Users/monica/Development/devenv/building/maven/repository/io/netty/netty-handler/4.1.60.Final/netty-handler-4.1.60.Final.jar:/Users/monica/Development/devenv/building/maven/repository/io/netty/netty-codec/4.1.60.Final/netty-codec-4.1.60.Final.jar:/Users/monica/Development/devenv/building/maven/repository/io/netty/netty-handler-proxy/4.1.60.Final/netty-handler-proxy-4.1.60.Final.jar:/Users/monica/Development/devenv/building/maven/repository/io/netty/netty-codec-socks/4.1.60.Final/netty-codec-socks-4.1.60.Final.jar:/Users/monica/Development/devenv/building/maven/repository/io/netty/netty-codec-http/4.1.60.Final/netty-codec-http-4.1.60.Final.jar:/Users/monica/Development/devenv/building/maven/repository/io/netty/netty-codec-http2/4.1.60.Final/netty-codec-http2-4.1.60.Final.jar:/Users/monica/Development/devenv/building/maven/repository/io/netty/netty-resolver/4.1.60.Final/netty-resolver-4.1.60.Final.jar:/Users/monica/Development/devenv/building/maven/repository/io/netty/netty-resolver-dns/4.1.60.Final/netty-resolver-dns-4.1.60.Final.jar:/Users/monica/Development/devenv/building/maven/repository/io/netty/netty-codec-dns/4.1.60.Final/netty-codec-dns-4.1.60.Final.jar:/Users/monica/Development/devenv/building/maven/repository/com/fasterxml/jackson/core/jackson-core/2.11.3/jackson-core-2.11.3.jar:/Users/monica/Development/devenv/building/maven/repository/io/vertx/vertx-codegen/4.1.0/vertx-codegen-4.1.0.jar com.demos.vertx.minirunner.RunThePracticeTwo
    Thread1--->: 0
    Thread4--->: 1
    Thread3--->: 0
    Thread2--->: -1
    main--->: 0
    
    Process finished with exit code 0
    

    相关文章

      网友评论

          本文标题:Java多线程之——简单多线程:Thread和Runnable

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