两个线程,一个对一个变量加100次 一个对一个变量减50次

    xiaoxiao2025-05-23  32

    实现方式1

    package com.javabase; public class Test3 { static int a=1; public static void main(String[] args) { Thread t1=new Thread(new Runnable(){ @Override public void run() { // TODO Auto-generated method stub for(int i=0;i<100;i++){ a++; System.out.println(Thread.currentThread().getName()+"--"+a); } } }); Thread t2=new Thread(new Runnable(){ @Override public void run() { // TODO Auto-generated method stub for(int i=0;i<50;i++){ a--; System.out.println(Thread.currentThread().getName()+"--"+a); } } }); t1.start(); t2.start(); } }

    实现方式2 需要四个类

    User

    package com.javabase; public class User { public int age; }

    TestThread1

    package com.javabase; public class TestThread1 implements Runnable { User a; public TestThread1(User b){ this.a=b; } @Override public void run() { // TODO Auto-generated method stub for(int i=0;i<100;i++){ this.a.age++; System.out.println(Thread.currentThread().getName()+"--"+this.a.age); } } }

    TestThread2

    package com.javabase; public class TestThread2 implements Runnable { User a; public TestThread2(User b){ this.a=b; } @Override public void run() { // TODO Auto-generated method stub for(int i=0;i<50;i++){ this.a.age--; System.out.println(Thread.currentThread().getName()+"--"+this.a.age); } } }

    测试 Test1

    package com.javabase; public class Test1 { public static void main(String[] args) { // TODO Auto-generated method stub User u=new User(); u.age=1; TestThread1 t1=new TestThread1(u); TestThread2 t2=new TestThread2(u); Thread tt1=new Thread(t1); tt1.setName("t1"); Thread tt2=new Thread(t2); tt2.setName("t2"); tt1.start(); tt2.start(); } }
    最新回复(0)