当前位置: 代码迷 >> J2SE >> 请教JAVA怎么编写多线程共享一个变量?注意是不同的构造函数做出的线程
  详细解决方案

请教JAVA怎么编写多线程共享一个变量?注意是不同的构造函数做出的线程

热度:103   发布时间:2016-04-23 19:58:30.0
请问JAVA如何编写多线程共享一个变量?注意是不同的构造函数做出的线程。
同一个类的多个线程共享我知道。
假如说我做了两个不同的class XXXX implements Runnable{},如何能让两个线程共享一个变量呢?
如果有可能,最好让该变量从main()中传递过去:

class XXXX implements Runnable{}
class YYYY implements Runnable{}

public void static main(String[] args){
int a=10;
Runnable first = new XXXX(a);
Runnable second = new YYYY(a);
first.start();
second.start();
}

然后first和second同时对a进行操作。
------解决思路----------------------
你两个线程要并发操作一个变量,那么这个变量必须要做同步处理,所以必须先定义一个新的类型,这个类型自带同步处理。
class A {	
Integer a = 1;
public synchronized void add() {
a = a + 1;
}
public synchronized Integer get() {
return a;
}
}


然后再定义两个线程类,比如
class XXXX implements Runnable {
private A a;
public XXXX(A a) {
this.a = a;
}
@Override
public void run() {
a.add();
}
}

YYYY的定义类似;那么main函数里面就是这样的:
	public static void main(String[] args) {
A a = new A();
XXXX x = new XXXX(a);
YYYY y = new YYYY(a);
new Thread(x).start();
new Thread(y).start();
}
  相关解决方案