Java多线程--两个线程同时对一个人的年龄进行增加和修改
1 public class Thread_A extends Thread { 2 Human human; 3 4 public Thread_A(String name, Human human) { 5 super(name); 6 this.human = human; 7 } 8 9 @Override 10 public void run() { 11 for (int i = 0; i < 100; i++) { 12 human.setAge(human.getAge()+1); 13 System.out.println(getName()+"线程实现Human的年龄+1,当前年龄:"+human.getAge()); 14 } 15 16 } 17 }
1 public class Thread_B extends Thread { 2 Human human; 3 4 public Thread_B(String name,Human human) { 5 super(name); 6 this.human = human; 7 } 8 9 @Override 10 public void run() { 11 for (int i = 0; i < 100; i++) { 12 human.setAge(human.getAge()-1); 13 System.out.println(getName()+"线程实现Human的年龄-1,当前年龄:"+human.getAge()); 14 } 15 } 16 }
1 public class TestThread { 2 public static void main(String[] args) { 3 Human human = new Human("张三", 10); 4 Thread t1 = new Thread(new Thread_A("A",human)); 5 Thread t2 = new Thread(new Thread_B("B",human)); 6 t1.start(); 7 t2.start(); 8 } 9 }
1 @SuppressWarnings("all") 2 public class Human { 3 private String name; 4 private int age; 5 6 public Human() { 7 } 8 9 public Human(String name, int age) { 10 this.name = name; 11 this.age = age; 12 } 13 14 public int getAge() { 15 return age; 16 } 17 18 public synchronized void setAge(int age) { 19 if (age>0){ 20 this.age = age; 21 }else { 22 this.age = 0; 23 } 24 } 25 26 @Override 27 public String toString() { 28 return "Human{" + 29 "name='" + name + '\'' + 30 ", age=" + age + 31 '}'; 32 } 33 }
原创文章,转载请说明出处,谢谢合作
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律