我想说,我知道有这种类似的问题开始了。 我做了一些搜索,我也找了一些资料。 不幸的是,这些解决方案并没有帮助我。 我不知道为什么。 这就是为什么我问这个问题。
我有两个主题,我在Java中工作。 我有一个与此相关的四个类别。 第一类是在它的“主”方法的类。 它建立并启动所有的线程。 这里是我开始和申报主题:
Thread thread1 = new Thread(){
public void run(){
DeliverMessage deliverMess = new DeliverMessage();
deliverMess.deliver();
}
}
Thread thread2 = new Thread(){
public void run(){
Timing time = new Timing();
time.controlTime();
}
}
thread1.start();
thread2.start();
第二类包含了所有的全局变量。 这个类被称为“GlobalVariables”。 GlobalVariables:
public class GlobalVariables(){
//Variables
public boolean proceed;
public boolean doubleCheck;
}
另一类,这被称为“DeliverMessage”设置这样的。 这是我有我的问题的类别之一。 DeliverMessage:
public class DeliverMessage(){
//Variables
String mess1 = "Hello";
String mess2 = "How are you?";
String mess3 = "Goodbye";
//Setup
GlobalVariables global = new GlobalVariables();
public void deliver(){
while(true){
if(global.proceed){
System.out.println(mess1);
}
if(global.doubleCheck){
System.out.println(mess2);
System.out.println(mess3);
}
}
}
我有麻烦的最后一堂课被称为“时机”。 我希望它能够改变,以便在邮件送达时控制布尔变量。 这里是:
public class Timing(){
//Setup
GlobalVariables global = new GlobalVariables();
public void controlTime(){
try {
TimeUnit.SECONDS.sleep(4);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
global.proceed = true;
try {
TimeUnit.SECONDS.sleep(16);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
global.doubleCheck = true;
}
}
我已经调查使用“挥发性”。 我没有找到工作。 我试着在“GlobalVariables”这样的声明变量的公共挥发性布尔进行;“。 我试图改变变量,但“DeliverMessage”类没有注册这种变化。 我也试图与“静态”做同样的事情。 这也不能工作。 变量似乎在“定时”级改变,但他们并不在“DeliverMessage”类链接到同一变量。
请让我知道我应该做的。 在此先感谢,〜录音棚
编辑:谢谢! 我有一对夫妇非常快澄清,但。 1)我声明布尔变量既是“静态”和“挥发”? 2)如何我指的是变量在“DeliverMessage”和“定时”班?