Hi All,
Today I have released new video on "Real-Time Employee Salary Processing with CompletableFuture | Java Interview Question MultiThreading"
This is frequently asked question in Java Interview.
Please watch full video, share, like and Subscribe Youtube channel and press bell icon. So you will get latest video notification.
|
|
public class Employee { int no; String name; double salary;
public Employee(int no, String name, double salary) { super(); this.no = no; this.name = name; this.salary = salary; } } package org.practice.basicprgms; import java.util.Arrays; import java.util.List; import java.util.concurrent.CompletableFuture; public class EmpSalProcessCompletableFuture { public static void main(String[] args) { List<Employee> employees = Arrays.asList( new Employee(1, "Amit", 50000), new Employee(2, "Rahul", 52000), new Employee(3, "Sneha", 53000), new Employee(4, "Priya", 54000), new Employee(5, "Vikas", 55000), new Employee(6, "John", 56000), new Employee(7, "David", 57000), new Employee(8, "Neha", 58000), new Employee(9, "Anjali", 59000), new Employee(10, "Karan", 60000), new Employee(11, "Rohit", 61000), new Employee(12, "Pooja", 62000), new Employee(13, "Aryan", 63000), new Employee(14, "Simran", 64000), new Employee(15, "Meera", 65000)
); List<Employee> group1 = employees.subList(0, 5); List<Employee> group2 = employees.subList(5, 10); List<Employee> group3 = employees.subList(10, 15);
CompletableFuture<Void> future1 = CompletableFuture.runAsync(() -> processSalary(group1));
CompletableFuture<Void> future2 = CompletableFuture.runAsync(() -> processSalary(group2));
CompletableFuture<Void> future3 = CompletableFuture.runAsync(() -> processSalary(group3));
CompletableFuture.allOf(future1, future2, future3).join();
System.out.println("Salary Processed Successfully!"); }
public static void processSalary(List<Employee> empList) { empList.forEach(emp -> { String threadName = Thread.currentThread().getName().substring(24);
double incrementedSalary = emp.salary + (emp.salary * 10 / 100);
System.out.println( "Thread Name : "+ threadName + " Employee Name : "+ emp.name + " Employee Old Salary : "+ emp.salary + " Employee New Salary : "+ incrementedSalary );
try { Thread.sleep(1000);
}catch(Exception e) {}
});
} } Output: Thread Name : worker-2 Employee Name : John Employee Old Salary : 56000.0 Employee New Salary : 61600.0 Thread Name : worker-3 Employee Name : Rohit Employee Old Salary : 61000.0 Employee New Salary : 67100.0 Thread Name : worker-1 Employee Name : Amit Employee Old Salary : 50000.0 Employee New Salary : 55000.0 Thread Name : worker-2 Employee Name : David Employee Old Salary : 57000.0 Employee New Salary : 62700.0 Thread Name : worker-3 Employee Name : Pooja Employee Old Salary : 62000.0 Employee New Salary : 68200.0 Thread Name : worker-1 Employee Name : Rahul Employee Old Salary : 52000.0 Employee New Salary : 57200.0 Thread Name : worker-2 Employee Name : Neha Employee Old Salary : 58000.0 Employee New Salary : 63800.0 Thread Name : worker-3 Employee Name : Aryan Employee Old Salary : 63000.0 Employee New Salary : 69300.0 Thread Name : worker-1 Employee Name : Sneha Employee Old Salary : 53000.0 Employee New Salary : 58300.0 Thread Name : worker-3 Employee Name : Simran Employee Old Salary : 64000.0 Employee New Salary : 70400.0 Thread Name : worker-2 Employee Name : Anjali Employee Old Salary : 59000.0 Employee New Salary : 64900.0 Thread Name : worker-1 Employee Name : Priya Employee Old Salary : 54000.0 Employee New Salary : 59400.0 Thread Name : worker-2 Employee Name : Karan Employee Old Salary : 60000.0 Employee New Salary : 66000.0 Thread Name : worker-3 Employee Name : Meera Employee Old Salary : 65000.0 Employee New Salary : 71500.0 Thread Name : worker-1 Employee Name : Vikas Employee Old Salary : 55000.0 Employee New Salary : 60500.0 Salary Processed Successfully! |
0 Comments