线程冲突1

class DataObject {
	int dataItem1;
	int dataItem2;
	DataObject() {
		dataItem1 = 50;
		dataItem2 =50;
	}
	void itemSwap() {
		int x = (int)( -4.999999+Math.random() * 10);
		dataItem1 -= x;
		keepBusy( 10 );
		dataItem2 += x;
	}
	void test() {
		int sum = dataItem1 + dataItem2;
		System.out.println( sum );
	}
	public void keepBusy( int howLong ) {
		long curt = System.currentTimeMillis();
		while( System.currentTimeMillis() < curt + howLong );
	}
}

class RepeatedSwaps extends Thread {
	DataObject dobj;
	RepeatedSwaps( DataObject d ) {
		dobj = d;
		start();
	}
	public void run() {
		int i = 0;
		while( i<20000 ) {
			dobj.itemSwap();
			if( i % 4000 == 0 ) {
				dobj.test();
			} 
			try {
				sleep( ( int )( Math.random() * 2 ) );
			}catch( InterruptedException e) {}
			i++;
		}
	}
}
public class UnsynchedSwaps {
	public static void main(String[] args) {
		DataObject d = new DataObject();
		new RepeatedSwaps( d );
		new RepeatedSwaps( d );
		new RepeatedSwaps( d );
		new RepeatedSwaps( d );
		new RepeatedSwaps( d );
		new RepeatedSwaps( d );
	}	
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值