class Sum { // Method 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 { // reference pass SumCal. Class Sum calculator; Thread1(Sum calculator) { this.calculator = calculator; } // override run() public void run() { calculator.calculateSum(1, 10); } } class MyThread2 extends Thread { // reference Sum calculator; MyThread2(Sum calculator) { this.calculator = calculator; } // override run 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(); } }