谁能写一个java多线程读同一个变量,读出来值不同的例子

景樗子刘 发布于 2014/05/09 22:00
阅读 1K+
收藏 1

开源之夏第三届火热来袭,高校学生参与赢万元奖金!>>>

谁能写一个java多线程读同一个变量,读出来值不同的例子。

看看我写的,这个,

import java.util.Random;

public class Test {

	private Integer number = 1;
	private Object lock = new Object();

	@org.junit.Test
	public void runTest() throws InterruptedException {
		new Thread(new TestRun1(), "run1").start();
		new Thread(new TestRun2(), "run2").start();
		synchronized (this) {
			this.wait();
		}
		
	}

	class TestRun1 implements Runnable {
		Random random = new Random();

		@Override
		public void run() {
			while (true) {
				number = random.nextInt();
				System.out.println(Thread.currentThread().getName()
						+ ":number=" + number);
				synchronized (lock) {
					try {
						lock.notifyAll();
						lock.wait();
					} catch (InterruptedException e) {
						e.printStackTrace();
					}
				}
			}
		}

	}

	class TestRun2 implements Runnable {

		@Override
		public void run() {
			while (true) {
				System.out.println(Thread.currentThread().getName()
						+ ":number=" + number);
				synchronized (lock) {
					try {
						lock.notifyAll();
						lock.wait();
					} catch (InterruptedException e) {
						e.printStackTrace();
					}
				}
			}
		}

	}

}



加载中
1
马太航
马太航

自己读时间变量吧

0
悟方向
悟方向

有读有写 读出来的值才可能不一样 只读不写的话 肯定永远都是一样的

景樗子刘
景樗子刘
来一个看看
0
NealFeng
NealFeng

所有线程只读不去改变量,变量怎么可能不同。。。

NealFeng
NealFeng
回复 @一句诗的轻叹 : 运行下不就知道了,实现这个的目的是?
景樗子刘
景樗子刘
我这样一个有读有写,一个只读,能显出效果不?
0
huamingweiwen
huamingweiwen
该评论暂时无法显示,详情咨询 QQ 群:点此入群
0
关永征
关永征

这个是你要的答案吗?我写了一个,不知道是你所需要的么?

http://www.oschina.net/code/snippet_1754381_35825

OSCHINA
登录后可查看更多优质内容
返回顶部
顶部
返回顶部
顶部