关于进程之间共享变量的问题

shuaiwang_01 2011-03-09 03:12:57
class A implements Runnable {

private int[] arr = new int[3];

public void run() {
arr[0] = 4;
arr[1] = 5;
arr[2] = 6;
}

public int[] getArr() {
return arr;
}
public void setArr(int[] arr) {
this.arr = arr;
}
}

public class Main {
public static void main(String args[]) {
A a = new A();

int[] arr = { 0, 3, 8 };
a.setArr(arr);
Thread t = new Thread(a);
t.start();

int[] b = a.getArr();
for (int i = 0; i < b.length; i++)
System.out.println(b[i]);
}
}
/*
* 我这题的主要意思是arr作为A类对象线程和主线程的共享变量,当arr在A对象里面被改变时,主线程只能等待,不准去获取arr,
* 只有run()方法执行完后,才能去读取arr,然后输出。
* 不知该如何设置?
*/
...全文
182 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
钟世云 2011-03-10
  • 打赏
  • 举报
回复
class A implements Runnable {

private int[] arr = new int[3];
Object sycroniz;

public synchronized void run() {
arr[0] = 4;
arr[1] = 5;
arr[2] = 6;
notify();
}

public synchronized int[] getArr() throws Exception {
wait();
return arr;
}

public void setArr(int[] arr) {
this.arr = arr;
}
}

public class Main {

public static void main(String args[]) throws Exception {
A a = new A();
int[] arr = {0, 3, 8};
a.setArr(arr);
Thread t = new Thread(a);
t.start();
int[] b = a.getArr();
for (int i = 0; i < b.length; i++) {
System.out.println(b[i]);
}
}
}
zqfddqr 2011-03-09
  • 打赏
  • 举报
回复


class A implements Runnable {

private int[] arr = new int[3];
Object sycroniz;

public synchronized void run() {
arr[0] = 4;
arr[1] = 5;
arr[2] = 6;
notify();
}

public synchronized int[] getArr() throws Exception {
wait();
return arr;
}

public void setArr(int[] arr) {
this.arr = arr;
}
}

public class Main {

public static void main(String args[]) throws Exception {
A a = new A();
int[] arr = {0, 3, 8};
a.setArr(arr);
Thread t = new Thread(a);
t.start();
int[] b = a.getArr();
for (int i = 0; i < b.length; i++) {
System.out.println(b[i]);
}
}
}
colachens 2011-03-09
  • 打赏
  • 举报
回复
synchronized 方法(){}
shuaiwang_01 2011-03-09
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 woaini314 的回复:]

把run()中方法放到一个A类sycronized方法里,run()调用该方法
[/Quote]
你可以试一下
caibird1024 2011-03-09
  • 打赏
  • 举报
回复
把run()中方法放到一个A类sycronized方法里,run()调用该方法
shuaiwang_01 2011-03-09
  • 打赏
  • 举报
回复
其实就是让输出为:
4
5
6

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧