Может ли кто-нибудь сказать мне, как получить доступ к одному методу одновременно с 2 потоками, этот метод имеет 2 параметра и 2 синхронизированный блок. и я хочу, чтобы один поток выполнял первый синхронизированный блок, а другой поток выполнял второй синхронизированный блок.Доступ к двум синхронизированным блокам с двумя потоками одновременно
public class myThread{
public static class TwoSums implements Runnable{
private int sum1 = 0;
private int sum2 = 0;
public void add(int a, int b){
synchronized(this){
sum1 += a;
String name = Thread.currentThread().getName();
System.out.println("Thread name that was accessing this code 1 : "+name);
}
synchronized(this){
sum2 += b;
String name = Thread.currentThread().getName();
System.out.println("Thread name that was accessing this code 2 : "+name);
}
}
@Override
public void run() {
add(10,20);
}
}
public static void main(String[] args) {
TwoSums task = new TwoSums();
Thread t1 = new Thread(task, "Thread 1");
Thread t2 = new Thread(task, "Thread 2");
t1.start();
t2.start();
}
}
Этот код, содержащий некоторый код из: http://tutorials.jenkov.com/java-concurrency/race-conditions-and-critical-sections.html
Второго поток не может добраться до второго синхронизированного блока без выполнения первого первого ... – immibis
Разделите ваш метод на 2 различные методы. –
, значит, я не могу получить доступ к 2 синхронизированным блокам с 2 потоками в одном методе? – Okem