java~多线程 设计4个线程,其中两个线程每次对J+1,两个线程每次对J-1

package com.given.thread.entity;


public class J {

    private int j;

    public synchronized int getJ(){
        return j;
    }

    public synchronized void addJ(){
        this.j++;
    }

    public synchronized void decJ(){
        this.j--;
    }


}
package com.given.thread.entity;

public class Add extends Thread{

    private J j;

    public Add(J j) {
        super();
        this.j = j;
    }

    public void run() {

        for(int i=0;i<5;i++) {
            j.addJ();
            System.out.println(Thread.currentThread().getName()+"将j+1后,j="+j.getJ());
        }

    }
}
package com.given.thread.entity;

public class Dec extends Thread {

    private J j;

    public Dec(J j) {
        super();
        this.j = j;
    }

    @Override
    public void run() {
        for(int i=0;i<5;i++) {
            j.decJ();;
            System.out.println(Thread.currentThread().getName()+"将j-1后,j="+j.getJ());
        }
    }

}
package com.given.thread;

import com.given.thread.entity.Add;
import com.given.thread.entity.Dec;
import com.given.thread.entity.J;

public class Test {

    public static void main(String[] args) throws InterruptedException {
        J j=new J();
        Add a1=new Add(j);
        Add a2=new Add(j);
        Dec d1=new Dec(j);
        Dec d2=new Dec(j);

        a1.setName("线程1");
        a2.setName("线程2");

        d1.setName("线程1");
        d2.setName("线程2");

        a1.start();
        a1.join();
        a2.start();
        a2.join();
        d1.start();
        d1.join();
        d2.start();
        d2.join();


    }
}

线程1将j+1后,j=1
线程1将j+1后,j=2
线程1将j+1后,j=3
线程1将j+1后,j=4
线程1将j+1后,j=5
线程2将j+1后,j=6
线程2将j+1后,j=7
线程2将j+1后,j=8
线程2将j+1后,j=9
线程2将j+1后,j=10
线程1将j-1后,j=9
线程1将j-1后,j=8
线程1将j-1后,j=7
线程1将j-1后,j=6
线程1将j-1后,j=5
线程2将j-1后,j=4
线程2将j-1后,j=3
线程2将j-1后,j=2
线程2将j-1后,j=1
线程2将j-1后,j=0

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值