두 클래스가 있습니다. 클래스 Test
및 클래스 Application
. 테스트 클래스 implements Runnable
그리고 물론 스레드입니다.정적 문자열 conundrum 수수께끼 행동
두 클래스 모두 public static void main이 있습니다.
첫째 :
먼저 나는 클래스 수준 변수가있는 Test
클래스를 실행 "A"
public static String a = "abc";
그냥 새로운 값을 지정하고 그 값을 출력하는 것입니다. 둘째
는 :
또한 주요 방법이 있고 난 그냥 클래스 Test
에 Static String
을 인쇄 놀랍게도이 "ABC"를 인쇄 나의 Application
클래스를 시작합니다. 내 Test
수업을 시작한 후 두 번째 수업을 시작했습니다. 이상적으로는 모든 프로세스가 실행되고 하나의 프로세스가 다른 프로세스에 액세스하지 않아야하는 Java Sandbox로 인해 NULL
을 인쇄해야합니다.
내 질문이 여기에 있습니다. 왜 새로운 지정 문자열을 인쇄해서는 안됩니다. 내가
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);
}
}
정적 클래스가있는 경우 복수 실행시 두 번로드해야 함을 의미합니다. –
제언을 권해주십시오. 나는 JVM과 관련된 것들에 대해 더 알고 싶다. –