员工张三有两名监事,分别是监事A和监事B。他们经常根据他的表现调整他的薪水,可以增加或减少。尝试使用两个线程来执行主管 A 和主管 B 为张三调整工资的工作,并使用线程同步来解决数据完整性问题。用java语言输出其代码
时间: 2023-06-26 16:03:32 浏览: 81
一个java写的工资管理系统
3星 · 编辑精心推荐
可以使用Java内置的锁机制synchronized来实现线程同步,以下是示例代码:
```java
public class EmployeeSalary {
private int salary;
public synchronized void adjustSalaryByA(int amount) {
salary += amount;
System.out.println("监事A调整了员工的薪水,现在薪水为:" + salary);
}
public synchronized void adjustSalaryByB(int amount) {
salary += amount;
System.out.println("监事B调整了员工的薪水,现在薪水为:" + salary);
}
}
public class Main {
public static void main(String[] args) {
EmployeeSalary employee = new EmployeeSalary();
// 创建两个线程分别调整薪水
Thread threadA = new Thread(() -> {
employee.adjustSalaryByA(1000);
});
Thread threadB = new Thread(() -> {
employee.adjustSalaryByB(-500);
});
// 启动线程
threadA.start();
threadB.start();
}
}
```
在上面的示例代码中,使用synchronized关键字修饰了adjustSalaryByA和adjustSalaryByB方法,保证了这两个方法在执行时只能有一个线程访问,从而保证了数据的完整性。
阅读全文