Java多线程同步问题求助
代码如下:
public class ThreadMain {
Map<String,A> m = new HashMap<String, A>();
void putA(A a){
m.put("k", a);
}
void main(A a) {
int i = 10;
while(i > 0) {
B b = new B();
b.setValue(i);
a.setB(b);
R r = new R(m);
Thread t = new Thread(r);
t.start();
i--;
}
}
public static void main(String[] args) {
ThreadMain d = new ThreadMain();
A a = new A();
d.putA(a);
d.main(a);
}
}
class R implements Runnable{
Map<String,A> m;
R(Map<String,A> m){
this.m = m;
}
public void run() {
A a = m.get("k");
System.out.println("before set A.b.value is:"+a.getB().getValue());
B b = new B();
b.setValue(8888);
a.setB(b);
System.out.println("after set A.b.value is:"+a.getB().getValue());
}
}
class A {
private B b;
public B getB() {
return b;
}
public void setB(B b) {
this.b = b;
}
}
class B{
private int value;
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
}
相关推荐
以银行取钱为例模拟Java多线程同步问题完整代码
主要介绍了以银行取钱为例模拟Java多线程同步问题完整代码,具有一定借鉴价值,需要的朋友可以参考下。
java实现多线程间的同步与互斥(读者写者问题)
用java实现多线程并发中的读者与写者问题,能够实现多线程对临界资源的同步有序访问。 具体实现为: 给定一个队列A[1-10][1-100000]、元素编号1-10,其中每个元素包含10万个随机数。创建若干个线程,各循环100次;其中10,100个为读线程,10,100个为更新线程。 1. 读线程每次产生随机数三元组:(i, j, k),其中i: [1-10], j: [1-100000],k[j-100000],求取指定A[i]一级数组中第j到第k个元素的均值; 2. 更新线程每次产生一对随机整数三元组 (i, j, k) 和一个随机浮点数d:(0-1),其中i: [1-10], j: [1-100000],k[j-100000],完成对A[i][j]到A[i][k]之间的所有元素进行数值更新,x = x * (1 + d)
浅谈Java多线程编程中Boolean常量的同步问题
主要介绍了浅谈Java多线程编程中Boolean常量的同步问题,主要针对线程之间同步了不同的布尔对象的问题,需要的朋友可以参考下
Java多线程共享数据、同步、通信
一、线程共享数据 a)继承Thread,那么我们可以创建很多个这样的类,但是每个这样的类都是相互不关联的,也是说我们Thread类中的内容每个创建出来的类都有一份,因此它不适合作为数据共享的线程来操作。同时由于Java继承的性,我们只能继承一个对象。 b)使用runnable可以解决性和不能共享的问题(不是说使用runnable解决了共享问题,只是相对于创建Thread来说,它可以算的上是共享了,为了获得更精确的共享问题,它必须的使用线程同步操作)。实现了runnable接口的类比较适合用作共享数据。 一个测试例子à证明runnable能实现数据共享,thread不能
Java多线程按指定顺序同步执行
主要介绍了java多线程如何按指定顺序同步执行,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下


Java SE

