class Sum {
private int sum = 0;
synchronized void calculateSum(int a, int b) {
for (int i = a; i <= b; i++) {
sum += i;
System.out.println("Intermediate sum after adding " + i + " is: " + sum + " ---> " + Thread.currentThread().getName());
try {
Thread.sleep(400);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
class Thread1 extends Thread {
Sum calculator;
Thread1(Sum calculator) {
this.calculator = calculator;
}
public void run() {
calculator.calculateSum(1, 10);
}
}
class MyThread2 extends Thread {
Sum calculator;
MyThread2(Sum calculator) {
this.calculator = calculator;
}
public void run() {
calculator.calculateSum(1, 15);
}
}
public class Main {
public static void main(String[] args) {
Sum calculator = new Sum();
Thread1 t1 = new Thread1(calculator);
MyThread2 t2 = new MyThread2(calculator);
t1.start();
t2.start();
}
}