public class A {
public static int count=-1;
}
public class B {
B(){
new Thread(){
@Override
public void run() {
A.count=100;
while(true){
System.out.println("B:"+String.valueOf(A.count));
sleep(500);
}
super.run();
}}.start();
}
public class C {
C(){
new Thread(){
@Override
public void run() {
A.count=200;
while(true){
System.out.println("C:"+String.valueOf(A.count));
sleep(500);
}
super.run();
}}.start();
}
抽象出的问题大致上面这样的,三个类在不同的包中,怎么B一直输出100,而C一直输出200,太不可思议了吧,望高手解答。
大致逻辑是这样的
前台设置A.count=-1为等待状态,发送广播给后台服务,让它启动录音,后台接收到广播后开始录音,并改变A.count=0为录音状态,前台在不断监测A.count的值,如果后台开始录音了,则更新用户界面,否则一直等待。问题是后台服务改变了A.count的值,而前台监测的值却一直没变化。
想想应该是这样的,那有什么好的办法来处理进程间的通信呢,让它们共用一块内存的数据,帮忙解答
追答好吧。刚才我又测试了一下。再建一个类,然后让他有main方法,再里面实例B和C,这样在刚开始时count是100,而且是B的,然后在线程c中将count设为了200,这样B和C都是200了。PS.按照你的要求,我个人觉得用JAVA实现不太现实,因为你的目的要涉及到底层的东西,在windows上java很难实现吧。如果是用java写一个完整的系统,可以用监听器等,具体的看官方文档,但应该只有一个main方法,即只有一个进程,不然内存数据无法共享
大致逻辑是这样的
前台设置A.count=-1为等待状态,发送广播给后台服务,让它启动录音,后台接收到广播后开始录音,并改变A.count=0为录音状态,前台在不断监测A.count的值,如果后台开始录音了,则更新用户界面,否则一直等待。问题是后台服务改变了A.count的值,而前台监测的值却一直没变化。