java 死循环!死钻牛角尖的问题!!!!

青稞梅子酒 2011-05-20 09:38:24

public class A {
static String s;
public static void main(String[] args) {
s = null;
while(s == null);
}
}



public class B {
public static void main(String[] args) {
A.s = "s";
}
}


说明:这是两个类,类A是个死循环,直到类B启动,为类A中的s赋值,类A才会结束漫长的循环过程!

请问有什么办法可取代这个方法?就是说还是让A在那等待,直到类B启动,但是不用这种死循环的方式!问题补充:

这种模拟不行啊,实现不了,不知道什么原因
...全文
151 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
青稞梅子酒 2011-05-23
  • 打赏
  • 举报
回复
多谢各位啦!
pmars 2011-05-21
  • 打赏
  • 举报
回复
两个程序在一起根本,是、两个程序单独运行,根本就不会出现class A类终止的情况
疯狂鸭子 2011-05-21
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 pmars 的回复:]
两个程序在一起根本,是、两个程序单独运行,根本就不会出现class A类终止的情况
[/Quote]

难道想用到进程间通信来实现B类调用A类,危险~~~

如果在单一程序的话,可以用线程来实现你想要的功能。

试试吧~


chosen0ne 2011-05-21
  • 打赏
  • 举报
回复
先问问lz你这样能运行成功吗???

如果你是通过java A运行A类,然后java B运行B类,这样A和B是在两个JVM上,通过B类给A.s赋值,在运行A里的JVM上根本就不可见,因为不会共享内存状态。所以采用这种方式模拟肯定失败。

就是说通过main方法来运行的话,会新打开一个JVM。所以要模拟这种情况,还是得通过线程
dong_very_good 2011-05-21
  • 打赏
  • 举报
回复
学习了。。。
zhuosh 2011-05-20
  • 打赏
  • 举报
回复
两个程序在一起根本,是、两个程序单独运行,根本就不会出现class A类终止的情况
青稞梅子酒 2011-05-20
  • 打赏
  • 举报
回复

public class A {
static String s;
public static void main(String[] args) {
while(s == null);
System.out.println("终于出来了");
}
}




public class B {
public static void main(String[] args) {
while(A.s == null) {
A.s = "s";
}
}
}

62,614

社区成员

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

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