我有两节课。班级Test
和班级Application
。测试类implements Runnable
,是一个线程..当然。
这两个类都有 public static void main。
第一的:
首先,我启动Test
有一个类级别变量“a”的类
public static String a = "abc";
这指向一个字符串对象,在线程内部,我只是为其分配一个新值并打印该值。
第二:
我启动了我的Application
类,它也有一个 main 方法,我刚刚Static String
在课堂上打印了Test
,令人惊讶的是它打印了“abc”。请注意,我在上课后开始了第二节Test
课。理想情况下,它应该NULL
像 Java Sandbox 一样打印,每个进程都在其中运行,一个进程不应访问其他进程。
现在我的问题是为什么?为什么它不应该打印新分配的字符串。我在下面上两门课
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author AZ
*/
public class Test implements Runnable {
public static String a = "abc";
@Override
public void run(){
while(true){
System.out.println(a);
a = new Date().toString();
try {
Thread.sleep(2000);
} catch (InterruptedException ex) {
Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}
class ThreadRunner {
static public void main(String args[]){
new Thread(new Test()).start();
}
}
二等舱
import com.springhibernate.beans.MessageBean;
import com.springhibernate.beans.Test;
import org.springframework.beans.factory.annotation.Autowired;
/**
*
* @author AZ
*/
public class Application {
public static void main(String args[]){
System.out.println("Test of printing String " + Test.a);
}
}