java多线程实现数据_java多线程实现两个线程对数据加1,两个线程对数据减1

本文介绍了一个使用四个线程(两个加线程和两个减线程)对共享变量进行操作的案例,并通过synchronized关键字实现了线程间的同步,确保了加线程和减线程能够并发执行,而同一操作类型的线程互斥。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

代码如下:

两个加的线程实现数据共享不能同时操作数据

两个减的线程实现数据共享不能同时操作数据

加线程和减线程能同时操作

package com.tan.test313.homework.thread;

/**

* 试编写程序实现 4个线程, 其中两个线程每次对j增加1, 另外两个线程对j每次减少1。

*

* @use

* @author tanyouhao

* @date 2013-3-13 下午7:28:36

* @version 1.0

*

*/

public class FourThread implements Runnable {

private int j;

public FourThread(int j) {

super();

this.j = j;

}

@Override

public void run() {

while (true) {

//注意:如果发synchronzied方到这里,那么四个方法将进行同步,即 不能同时操作j

//如果按照下面的 则加和减可以同时进行,两个减或者加不能同时进行

if (Thread.currentThread().getName().indexOf("加") >= 0) {

synchronized (this) {

if (j < 50) {

add();

}

}

} else if (Thread.currentThread().getName().indexOf("减") >= 0) {

synchronized (this) {

if (j > 0) {

minus();

}

}

}

}

}

public void add() {

j++;

System.out.println(Thread.currentThread().getName() + ":" + j);

}

public void minus() {

j--;

System.out.println(Thread.currentThread().getName() + ":" + j);

}

public static void main(String args[]) {

FourThread ft = new FourThread(25);

new Thread(ft, "1号加线程").start();

//new Thread(ft, "2号加线程").start();

new Thread(ft, "1号减线程").start();

//new Thread(ft, "2号减线程").start();

}

}

运行结果:

......

1号加线程:44

1号加线程:45

1号加线程:46

1号加线程:47

1号加线程:48

1号加线程:49

1号加线程:50

1号减线程:49

1号减线程:48

1号减线程:47

1号减线程:46

1号减线程:45

1号减线程:44

1号减线程:43

......

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值