Java 如果我不同步这些方法,后台会发生什么,导致应用程序在控制台不打印任何内容的情况下运行?

Java 如果我不同步这些方法,后台会发生什么,导致应用程序在控制台不打印任何内容的情况下运行?,java,multithreading,thread-safety,locking,Java,Multithreading,Thread Safety,Locking,我有一个主类,它有两个线程。这两个线程运行在另一个类中定义的两个方法 WaitNotifyMain.java package com.practice.multithreading; public class WaitNotifyMain { public static void main(String[] args) { WaitNotify waitNotify = new WaitNotify(); Thread t1 = new Thread(

我有一个主类,它有两个线程。这两个线程运行在另一个类中定义的两个方法

WaitNotifyMain.java

package com.practice.multithreading;

public class WaitNotifyMain {

    public static void main(String[] args) {
        WaitNotify waitNotify = new WaitNotify();
        Thread t1 = new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    waitNotify.produce();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        });

        // lambda expressions Java 8
        Thread t2 = new Thread(() -> {
            try {
                waitNotify.consume();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        });

        t1.start();
        t2.start();

        try {
            t1.join();
            t2.join();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }


    }

}

package com.practice.multithreading;

import java.util.LinkedList;
import java.util.List;

public class WaitNotify {


    /*created an object of linkedlist without Polymorphism  as we require 
    removeFIrst() method which is specific to the linkedList class*/
    private LinkedList<Integer> list = new LinkedList<Integer>();

    private final int LIMIT=10;

    public void produce() throws InterruptedException{
        int value = 0;
        while(true) {

            while(list.size()!=LIMIT) {
            list.add(value++);
            System.out.println("Added an element");

            }

        }

    }

    public void consume() throws InterruptedException{

        while(true) {
            while(!list.isEmpty()) {
                System.out.print("List size :"+list.size());
                int value = list.removeFirst();
                System.out.println("; value is: " +value);

            }

        }
    }
}

WaitNotify.java

package com.practice.multithreading;

public class WaitNotifyMain {

    public static void main(String[] args) {
        WaitNotify waitNotify = new WaitNotify();
        Thread t1 = new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    waitNotify.produce();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        });

        // lambda expressions Java 8
        Thread t2 = new Thread(() -> {
            try {
                waitNotify.consume();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        });

        t1.start();
        t2.start();

        try {
            t1.join();
            t2.join();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }


    }

}

package com.practice.multithreading;

import java.util.LinkedList;
import java.util.List;

public class WaitNotify {


    /*created an object of linkedlist without Polymorphism  as we require 
    removeFIrst() method which is specific to the linkedList class*/
    private LinkedList<Integer> list = new LinkedList<Integer>();

    private final int LIMIT=10;

    public void produce() throws InterruptedException{
        int value = 0;
        while(true) {

            while(list.size()!=LIMIT) {
            list.add(value++);
            System.out.println("Added an element");

            }

        }

    }

    public void consume() throws InterruptedException{

        while(true) {
            while(!list.isEmpty()) {
                System.out.print("List size :"+list.size());
                int value = list.removeFirst();
                System.out.println("; value is: " +value);

            }

        }
    }
}

package com.practice.multi-threading;
导入java.util.LinkedList;
导入java.util.List;
公共类等待通知{
/*按照我们的要求,创建了一个没有多态性的linkedlist对象
removeFIrst()方法,该方法特定于linkedList类*/
私有LinkedList=新建LinkedList();
私人最终整数限制=10;
public void product()引发InterruptedException{
int值=0;
while(true){
while(list.size()!=限制){
添加(value++);
System.out.println(“添加了一个元素”);
}
}
}
public void consume()引发InterruptedException{
while(true){
而(!list.isEmpty()){
系统输出打印(“列表大小:+List.size());
int value=list.removeFirst();
System.out.println(“;值为:”+值);
}
}
}
}
输出

Added an element
Added an element
Added an element
Added an element
Added an element
Added an element
Added an element
Added an element
Added an element
Added an element
List size :1Added an element
; value is: 0
List size :10Added an element
; value is: 1
List size :10Added an element
; value is: 2
List size :10Added an element
; value is: 3
List size :10Added an element
; value is: 4
List size :10Added an element
; value is: 5
List size :10Added an element
; value is: 6
List size :10Added an element
; value is: 7
List size :10Added an element
; value is: 8
List size :10Added an element
; value is: 9
List size :10Added an element
; value is: 10
List size :10Added an element
; value is: 11
List size :10Added an element
; value is: 12
List size :10; value is: 13
List size :10; value is: 14
List size :9; value is: 15
List size :8; value is: 16
List size :7; value is: 17
List size :6; value is: 18
List size :5; value is: 19
List size :4Added an element
Added an element
Added an element
Added an element
Added an element
Added an element
Added an element
Added an element
; value is: 20
List size :10; value is: 21
List size :10; value is: 22
List size :9; value is: 23
List size :8; value is: 24
List size :7; value is: 25
List size :6; value is: 26
List size :5; value is: 27
List size :4; value is: 28
List size :3; value is: 29
List size :2; value is: 30
List size :1; value is: 31
Added an element
Added an element
Added an element
Added an element
Added an element
Added an element
Added an element
Added an element
Added an element
Added an element
Added an element
List size :1Added an element
; value is: 32
List size :10Added an element
; value is: 33
List size :10Added an element
; value is: 34
List size :10Added an element
; value is: 35
List size :10Added an element
; value is: 36
List size :10; value is: 37
List size :10Added an element
Added an element
; value is: 38
List size :10Added an element
; value is: 39
List size :10Added an element
; value is: 40
List size :10Added an element
; value is: 41
List size :10Added an element
; value is: 42
List size :10Added an element
; value is: 43
List size :10Added an element
; value is: 44
List size :10Added an element
; value is: 45
List size :10Added an element
; value is: 46
List size :10Added an element
; value is: 47
List size :10Added an element
; value is: 48
List size :10Added an element
; value is: 49
List size :10Added an element
; value is: 50
List size :10Added an element
; value is: 51
List size :10Added an element
; value is: 52
List size :10Added an element
; value is: 53
List size :10Added an element
; value is: 54
List size :10Added an element
; value is: 55
List size :10Added an element
; value is: 56
List size :10Added an element
; value is: 57
List size :10Added an element
; value is: 58
List size :10Added an element
; value is: 59
List size :10Added an element
; value is: 60
List size :10Added an element
; value is: 61
List size :10Added an element
; value is: 62
List size :10Added an element
; value is: 63
List size :10Added an element
; value is: 64
List size :10Added an element
; value is: 65
List size :10Added an element
; value is: 66
List size :10Added an element
; value is: 67
List size :10Added an element
; value is: 68
List size :10Added an element
; value is: 69
List size :10Added an element
; value is: 70
List size :10Added an element
; value is: 71
List size :10Added an element
; value is: 72
List size :10Added an element
; value is: 73
List size :10Added an element
; value is: 74
List size :10Added an element
; value is: 75
List size :10Added an element
; value is: 76
List size :10Added an element
; value is: 77
List size :10Added an element
; value is: 78
List size :10Added an element
; value is: 79
List size :10Added an element
; value is: 80
List size :10Added an element
; value is: 81
List size :10Added an element
; value is: 82
List size :10Added an element
; value is: 83
List size :10Added an element
; value is: 84
List size :10Added an element
; value is: 85
List size :10Added an element
; value is: 86
List size :10Added an element
; value is: 87
List size :10Added an element
; value is: 88
List size :10Added an element
; value is: 89
List size :10Added an element
; value is: 90
List size :10Added an element
; value is: 91
List size :10Added an element
; value is: 92
List size :10Added an element
; value is: 93
List size :10Added an element
; value is: 94
List size :10Added an element
; value is: 95
List size :10; value is: 96
List size :10; value is: 97
List size :9; value is: 98
List size :8; value is: 99
List size :7Added an element
Added an element
Added an element
Added an element
Added an element
; value is: 100
List size :10; value is: 101
List size :9; value is: 102
List size :8; value is: 103
List size :7; value is: 104
List size :6; value is: 105
List size :5; value is: 106
List size :4; value is: 107
List size :3; value is: 108
List size :2; value is: 109
List size :1; value is: 110

>>>>>>>after this nothing in console<<<<<<<<<<<<<
添加了一个元素
添加了一个元素
添加了一个元素
添加了一个元素
添加了一个元素
添加了一个元素
添加了一个元素
添加了一个元素
添加了一个元素
添加了一个元素
列表大小:1添加了一个元素
; 值为:0
列表大小:10添加了一个元素
; 价值是:1
列表大小:10添加了一个元素
; 数值为:2
列表大小:10添加了一个元素
; 数值为:3
列表大小:10添加了一个元素
; 数值为:4
列表大小:10添加了一个元素
; 数值为:5
列表大小:10添加了一个元素
; 数值为:6
列表大小:10添加了一个元素
; 数值为:7
列表大小:10添加了一个元素
; 数值为:8
列表大小:10添加了一个元素
; 数值为:9
列表大小:10添加了一个元素
; 数值为:10
列表大小:10添加了一个元素
; 数值为:11
列表大小:10添加了一个元素
; 数值为:12
名单规模:10人;数值为:13
名单规模:10人;数值为:14
名单规模:9人;数值为:15
名单规模:8人;数值为:16
名单规模:7人;价值为:17
名单规模:6人;价值是:18
名单规模:5人;数值为:19
列表大小:4添加了一个元素
添加了一个元素
添加了一个元素
添加了一个元素
添加了一个元素
添加了一个元素
添加了一个元素
添加了一个元素
; 价值是:20
名单规模:10人;数值为:21
名单规模:10人;数值为:22
名单规模:9人;数值为:23
名单规模:8人;数值为:24
名单规模:7人;数值为:25
名单规模:6人;价值是:26
名单规模:5人;价值是:27
名单规模:4个;数值为:28
名单规模:3人;数值为:29
名单规模:2人;数值为:30
列表大小:1;价值为:31
添加了一个元素
添加了一个元素
添加了一个元素
添加了一个元素
添加了一个元素
添加了一个元素
添加了一个元素
添加了一个元素
添加了一个元素
添加了一个元素
添加了一个元素
列表大小:1添加了一个元素
; 数值为:32
列表大小:10添加了一个元素
; 价值是:33
列表大小:10添加了一个元素
; 价值是:34
列表大小:10添加了一个元素
; 价值是:35
列表大小:10添加了一个元素
; 数值为:36
名单规模:10人;数值为:37
列表大小:10添加了一个元素
添加了一个元素
; 数值为:38
列表大小:10添加了一个元素
; 数值为:39
列表大小:10添加了一个元素
; 数值为:40
列表大小:10添加了一个元素
; 数值为:41
列表大小:10添加了一个元素
; 数值为:42
列表大小:10添加了一个元素
; 数值为:43
列表大小:10添加了一个元素
; 数值为:44
列表大小:10添加了一个元素
; 数值为:45
列表大小:10添加了一个元素
; 数值为:46
列表大小:10添加了一个元素
; 价值是:47
列表大小:10添加了一个元素
; 数值为:48
列表大小:10添加了一个元素
; 价值是:49
列表大小:10添加了一个元素
; 价值是:50
列表大小:10添加了一个元素
; 数值为:51
列表大小:10添加了一个元素
; 数值为:52
列表大小:10添加了一个元素
; 价值是:53
列表大小:10添加了一个元素
; 数值为:54
列表大小:10添加了一个元素
; 数值为:55
列表大小:10添加了一个元素
; 数值为:56
列表大小:10添加了一个元素
; 数值为:57
列表大小:10添加了一个元素
; 数值为:58
列表大小:10添加了一个元素
; 数值为:59
列表大小:10添加了一个元素
; 数值为:60
列表大小:10添加了一个元素
; 价值为:61
列表大小:10添加了一个元素
; 数值为:62
列表大小:10添加了一个元素
; 数值为:63
列表大小:10添加了一个元素
; 数值为:64
列表大小:10添加了一个元素
; 数值为:65
列表大小:10添加了一个元素
; 数值为:66
列表大小:10添加了一个元素
; 价值为:67
列表大小:10添加了一个元素
; 数值为:68
列表大小:10添加了一个元素
; 数值为:69
列表大小:10添加了一个元素
; 数值为:70
列表大小:10添加了一个元素
; 数值为:71
列表大小:10添加了一个元素
; 数值为:72
列表大小:10添加了一个元素
; 数值为:73
列表大小:10添加了一个元素
; 数值为:74
列表大小:10添加了一个元素
; 数值为:75
列表大小:10添加了一个元素
; 数值为:76
列表大小:10添加了一个元素
; 数值为:77
列表大小:10添加了一个元素
; 数值为:78
列表大小:10添加了一个元素
; 数值为:79
列表大小:10添加了一个元素
; 数值为:80
列表大小:10添加了一个元素
; 数值为:81
列表大小:10添加了一个元素
; 数值为:82
列表大小:10添加了一个元素
; 数值为:83
列表大小:10添加了一个元素
; 数值为:84
列表大小:10添加了一个元素
; 数值为:85
列表大小:10添加了一个元素
; 数值为:86
列表大小:10添加了一个元素
; 价值为:87
列表大小:10添加了一个元素
; 数值为:88
列表大小:10添加了一个元素
; 价值为:89
列表大小:10添加了一个元素
; 数值为:90
列表大小:10添加了一个元素
; 数值为:91
列表大小:10添加了一个元素
; 数值为:92
列表大小:10添加了一个元素
; 价值是:93
列表大小:10添加了一个元素
; 价值为:94
列表大小:10添加了一个元素
; 数值为:95
名单规模:10人;数值为:96
名单规模:10人;数值为:97
名单规模:9人;数值为:98
名单规模:8人;数值为:99
列表大小:7添加了一个元素
添加了一个元素
添加了一个元素
添加了一个元素
添加了一个元素
; 数值为:100
名单规模:10人;数值为:101