Search
Write a publication
Pull to refresh
0
0
Send message

Возможно я что-то упускаю, но не могу понять, как в Вашем примере проверялась работа volatile, у меня всё равно проскакивает то тут, то там значение 0. Мой код ниже:

Hidden text
public class Example {
    volatile int x; // общий для всех потоков ресурс

    public void exec() {

        Thread thread1 = new Thread(new Runnable() {
            @Override
            public void run() {
                x = 1; // параллельно изменяет общий ресурс
            }
        });

        Thread thread2 = new Thread(new Runnable() {
            @Override
            public void run() {
                x = 2; // параллельно изменяет общий ресурс
            }
        });

        Thread thread3 = new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println(x); // параллельно читает общий ресурс
            }
        });

        thread1.start();
        thread2.start();
        thread3.start();
    }
}


public class Main {

    public static void main(String[] args) throws NoSuchMethodException {

        while(true) {
            Example example = new Example();
            example.exec();
        }

    }

}

Information

Rating
Does not participate
Registered
Activity

Specialization

Backend Developer
Git
SQL
OOP
PostgreSQL
Java
Spring Boot
Docker
REST
Junit
JDBC