File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
The moose likes Beginning Java and the fly likes static reference Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Beginning Java
Bookmark "static reference" Watch "static reference" New topic

static reference

Ricky Martaputra
Ranch Hand

Joined: Apr 04, 2005
Posts: 42
i'd like to ask about static object reference.
i have a class like this:

and the other one as a main class:

when i executed the TestMain class, the output is Size = 1 and when i excuted in other console, the output is still Size = 1.

Can you tell me how to make ouput Size = 2 while i execute in other console and always increase the size value if i execute in other window?

thanks in advance
Ricky Martaputra
Ranch Hand

Joined: Apr 04, 2005
Posts: 42
I'm sorry, there is a little mistake in my first code, the first class name should be TStaticImpl, not Test.
Ulf Dittmer

Joined: Mar 22, 2005
Posts: 42965
It sounds like you are executing the program and then -when it quits- start it again in the same (or another) terminal window. That means you're creating different JVMs. Variables (static or not) are only kept alive within a JVM, meaning you need to keep the JVM running, and then -when you repeatedly add values- will the number of objects increase.
If you want to persist objects between JVM invocations, have a look at serialization. If you want to keep the JVM up and running, some kind of application server would be required.
Ernest Friedman-Hill
author and iconoclast

Joined: Jul 08, 2003
Posts: 24199

Static variables are shared among all instances of a class within a single Java virtual machine (JVM). If you run the same program twice in two different console windows, you're running two separate, unrelated JVMs, and each has its own copy of that static variable. There's no way to make multiple JVMs share the same variable. What you would have to do is make multiple JVMs communicate with one JVM that "owns" the variable. This is called "distributed computing." There are many different ways to do this in Java -- RMI, CORBA, HTTP, raw sockets. You can learn about all of them in the Java Tutorial.

[Jess in Action][AskingGoodQuestions]
Ricky Martaputra
Ranch Hand

Joined: Apr 04, 2005
Posts: 42
i see...

thanks for your help...
I agree. Here's the link:
subject: static reference
It's not a secret anymore!