Question about Methods

I was wondering why i was not getting the right output. The program should give me..
Storing : 0
Checking Queue...
Printing: 0
Storing: 1
Checking Queue...
Printing:1
etc...
but instead all I get is...
Storing :0
Checking Queue..
Storing:1
Checking Queue...
etc..
Here is my Code:
import java.util.ArrayList;
public class Problem {
     public Storage storeMe = new Storage();
     public static void main(String[] args) {
          (new Thread(new Counter())).start();
          (new Thread(new Printer())).start();
class Storage {
     ArrayList<Integer> queue = new ArrayList<Integer>();
     public int value;
     public int getValue() {
          if (queue.size() > 0)
               return queue.remove(0);
          else
               return -1;
     public void storeValue(int newvalue) {
          value = newvalue;
          queue.add(value);
class Counter extends Problem implements Runnable {
     public void run() {
          int counter = 0;
          while (true) {
               synchronized (this) {
                    try {
                         this.wait(1000L);
                    } catch (Exception e) {
               System.out.println("Storing : " + counter );
               storeMe.storeValue(counter);
               counter++;
class Printer extends Problem implements Runnable {
     public void run() {
          while (true) {
               synchronized (this) {
                    try {
                         this.wait(1000L);
                    } catch (Exception e) {
               System.out.println("Checking Queue ...");
               int num = storeMe.getValue();
               if (num != -1)
                    System.out.println("Printing : " + num);
}I think the problem with my code is that in the Printer class, the storeMe.getValue() method is not updated. Or more accurately, the queue is not updated.
Can anyone shed some light on this matter?
thanks in advance..

thanks for that info.
this program worked fine using static variables and methods. But now I'm trying to do it without using static modifier with the exception of the main().
I tried checking if there was an update on queue in the Printer class by changing the code to this:
class Printer extends Problem implements Runnable {
     public void run() {
          while (true) {
               synchronized (this) {
                    try {
                         this.wait(1000L);
                    } catch (Exception e) {
               System.out.println("Checking Queue ...");
               int num = storeMe.queue.size();
                    System.out.println("Queue size: " + num);
}and I got this output:
Storing : 0
Checking Queue ...
Queue size: 0
Checking Queue ...
Queue size: 0
Storing : 1
So basically, when the Printer Class runs and tries the to get the value from the storage class, it can't because the value read was 0, there was no queue. Does this mean that I have created a wrong object of the Storage class? or is there another way to call that method without using the static modifier?
Specifically, How do I Try to call an instance of a method with its values still intact? Let's say I want My Printer Class to access the values inputted by the Counter Class in the Storage Class.

Similar Messages

  • Question about method calling (Java 1.5.0_05)

    Imagine for example the javax.swing.border.Border hierarchy.
    I'm writing a BorderEditor for some gui builder, so I need a function that takes a Border instance and returns the Java code. Here is my first try:
    1 protected String getJavaInitializationString() {
    2     Border border = (Border)getValue();
    3     if (border == null)
    4         return "null";
    5
    6     return getCode(border);
    7 }
    8
    9 private String getCode(BevelBorder border) {...}
    10 private String getCode(EmptyBorder border) {...}
    11 private String getCode(EtchedBorder border) {...}
    12 private String getCode(LineBorder border) {...}
    13
    14 private String getCode(Border border) {
    15     throw new IllegalArgumentException("Unknown border class " + border.getClass());
    16 }This piece of code fails. Because no matter of what class is border in line 6, this call always ends in String getCode(Border border).
    So I replaced line 6 with:
    6     return getCode(border.getClass().cast(border));But with the same result. So, I try with the asSubClass() method:
    6     return getCode(Border.class.asSubClass(border.getClass()).cast(border));And the same result again! Then i try putting a concrete instance of some border, say BevelBorder:
    6     return getCode(BevelBorder.class.cast(border));Guess what! It worked! But this is like:
    6     return getCode((BevelBorder)border);And I don't want that! I want dynamic cast and correct method calling.
    After all tests, I give up and put the old trusty and nasty if..else if... else chain.
    Too bad! I'm doing some thing wrong?
    Thank in advance
    Quique.-
    PS: Sorry about my english! it's not very good! Escribo mejor en espa�ol!

    Hi, your spanish is quite good!
    getCode(...) returns the Java code for the given border.
    So getCode(BevelBorder border) returns a Java string that is something like this "new BevelBorder()".
    I want Java to resolve the method to call.
    For example: A1, A2 and A3, extends A.
    public void m(A1 a) {...}
    public void m(A2 a) {...}
    public void m(A3 a) {...}
    public void m(A a) {...}
    public void p() {
        A a = (A)getValue();
        // At this point 'a' could be instance of A1, A2 or A3.
        m(a); // I want this method call, to call the right method.
    }This did not work. So, i've used instead of m(a):
        m(a.getClass().cast(a));Didn't work either. Then:
        m(A.class.asSubClass(a.getClass()).cast(a));No luck! But:
        m(A1.class.cast(a)); // idem m((A1)a);Woks for A1!
    I don't know why m(A1.class.cast(a)) works and m(a.getClass().cast(a)) doesn't!
    thanks for replying!
    Quique

  • Question about methods in a class that implements Runnable

    I have a class that contains methods that are called by other classes. I wanted it to run in its own thread (to free up the SWT GUI thread because it appeared to be blocking the GUI thread). So, I had it implement Runnable, made a run method that just waits for the thread to be stopped:
    while (StopTheThread == false)
    try
    Thread.sleep(10);
    catch (InterruptedException e)
    //System.out.println("here");
    (the thread is started in the class constructor)
    I assumed that the other methods in this class would be running in the thread and would thus not block when called, but it appears the SWT GUI thread is still blocked. Is my assumption wrong?

    powerdroid wrote:
    Oh, excellent. Thank you for this explanation. So, if the run method calls any other method in the class, those are run in the new thread, but any time a method is called from another class, it runs on the calling class' thread. Correct?Yes.
    This will work fine, in that I can have the run method do all the necessary calling of the other methods, but how can I get return values back to the original (to know the results of the process run in the new thread)?Easy: use higher-level classes than thread. Specifically those found in java.util.concurrent:
    public class MyCallable implements Callable<Foo> {
      public Foo call() {
        return SomeClass.doExpensiveCalculation();
    ExecutorService executor = Executors.newFixedThreadPool();
    Future<Foo> future = executor.submit(new MyCallable());
    // do some other stuff
    Foo result = future.get(); // get will wait until MyCallable is finished or return the value immediately when it is already done.

  • A question about the getProperty method defined in the Security class

    Hello Everyone!
    I would like to ask a question about the getProperty method defined in the
    Security class.
    public static String getProperty(String key) Do you know how can I exract the list of all possible keys?.
    Thanks in advance,

    I found the answer, in fact the keys are defined in the java.security file.

  • Questions about using Bitlocker without TPM

    We currently use Bitlocker to encrypt our Windows 7 computers with TPM. Now we are looking at encrypting some Windows 7 computers without a TPM. I see how to change the group policy setting to allow Bitlocker without a TPM. I have looked at a lot of other
    threads and I have a few questions about how the Bitlocker without TPM works.
    1) I see a USB drive containing a key is required for Bitlocker configurations without a TPM, say the end user loses this USB drive, what are the recovery options for their computer? 
    This article seems to indicate that without the USB drive connected, you are unable to even access recovery options http://blogs.technet.com/b/hugofe/archive/2010/10/29/bitlocker-without-tpm.aspx
    We have recovery backed up to AD when Bitlocker is enabled, but how could we do this recovery on a computer on computer where it's USB is lost? Would we have to remove the HD itself and attach it to another computer to access?
    2) After enabling Bitlocker on a computer without a TPM and using the USB Drive for the key, is there a way to also add a PIN or password protection at bootup?

    Hi,
    Sorry for my dilatory reply, 
    Configuring a startup key is another method to enable a higher level of security with the TPM. The startup key is a key stored on a USB flash drive, and the USB flash drive must be inserted every time the computer starts. The startup key is used to provide
    another factor of authentication in conjunction with TPM authentication. To use a USB flash drive as a startup key, the USB flash drive must be formatted by using the NTFS, FAT, or FAT32 file system.
    You must have a startup key to use BitLocker on a non-TPM computer.
    From: http://technet.microsoft.com/de-de/library/ee449438(v=ws.10).aspx#BKMK_Key
    For more Q&A about BitLocker, you can refer to the link above.
    hope this is helpful.
    Roger Lu
    TechNet Community Support

  • Questions about Rooting...

    Hi everyone, I’ve some questions about rooting my Xperia Arc S. Hopefully I’ll get helpful answers from you.
    If I root my phone, shall I get regular software official updates from Sony?
    Currently Sony is rolling out the ICS update. After rooting the phone am I able to upgrade my phone to ICS?
    While rooting the phone if any damage is done, can that be recoverable by installing a fresh OS or something?
    Does the rooting process delete all the existing contacts, messages, apps etc?
    Finally can anyone please provide a full proof guide/tutorial for rooting the Xperia Arc S?
    Thanks in advance.
    Solved!
    Go to Solution.

    Do you have an app named Super USer ?
    Were you on 4.0.4 and then rooted your mobile using this method ?
    If yes then your mobile is not rooted for sure
    See how to root 4.0.4 here
    Discussion guidelines.
    Message me or any other moderator to seek help regarding moderation.

  • Question about Id3-tags and song managem

    Hello, I am getting ready to buy a Zen Touch 20GB in a couple of weeks and I have a few questions about the management software.
    (Correct me if I am wrong about something)
    ) Are songs organized into groups by Genre instead of just folders like on the Ipod?
    2) Are Id3-tags used instead of filename for identification?
    3) What parts of the tag are needed besides title and artist?
    4) Which version of tags does the Zen Touch recognize: Version or Version 2?
    5) If I edit my tags using an external program such as Id3-TagIT, will the tags carry over to the Creative software and to the player?
    Thanks a lot for your help. I want to make sure I have my music collection in order before I get my Zen Touch.

    euph_jay wrote:Ok, so lets say I have all my music in folders right now seperated into different categories on my hard dri've. Some folders denote the artist, some the album, and some a genre. Example: Folder: Chicago Contents: Chicago .mp3 files Folder: Techno Contents: various Techno artist's songs What is the best way of organizing my folder system, so that the transition will be easy to the player?
    Folders are pretty much irrelevant. What the software will do is look at the *tags* in the files and then use these to build the player's library.
    Will imbedded folders work on the player? (like Techno->Crystal Method->Cystal Method .mp3's)
    Again the player has no concept of folders, although if you set Techno as a Genre tag you will be able to view via this in the Music Library.
    Or, am I misunderstanding how music is stored into the mp3 player. Instead of storing music in a "folder like" system (like the Chicago folder or Techno folder), does it store all the songs individually on the device? Then you have to sort it by artist, album, or genre?
    Using your example, in the Music Library you have essentially three categories: Album, Artist, and Genre. So under Album you would see "Vegas" (the Crystal Method's album), under Artist you would see "The Crystal Method", and under Genre you would see "Techno" (and then either the album or artist under this... I forget which it is offhand).
    Make sense?

  • PL/SQL web service: question about stub

    hello,
    I'm currently learning how to work with PL/SQL Web Services.
    I have a question about stubs. The point is, I can deploy a web service to the OC4J server and it works. It also works when I create a stub following the WSDL I made with creating the PL/SQL web service. If I go to the endpoint in my webbrowser, the functionality is the same, with or without using a stub.
    My question is: what is the function of the stub?

    A stub is leveraged by a client application to communicate with a corresponding server side object (in this case, the web service implementation). If you think back to CORBA or RMI applications they follow a similar pattern.
    In the case of a web service you would use the stub to write a client application that could invoke the methods of the remote service and return the responses as java data types. The methods the stub class offers are the same as the methods of the web service interface. It's a common way for providing RPC like functionality.

  • Question about Logon ticket with user mapping at BI-JAVA environment

    We're implementing BI 7.0 including BI Java and SAP EP for end user
    access.
    I have two question about SSO method when we're using BI Java.
    I know we can simply configure SSO logon ticket with BI-Java(EP
    included) and BI-ABAP through BI template installer and we already
    succeeded in that case.
    But the problem is we want to change it to user mapping SSO method for
    some our internal reason.
    After we configure user mapping SSO, we've got SSO failed error when we
    call BI-Java stuff like BEx Web Application iView.
    After many testing implemented, we found SSO Logon ticket with user
    mapping (using SAP reference system). It seems working now.
    But our question is "Is it no problem when we use SSO logon ticket with
    user mapping?" Is there any restriction or issue?
    One more question is we can ONLY use user base mapping when reference
    system used. How can we assign BI-ABAP users to EP Group?

    Using an SAP Reference system is allright. But if the reason u r going for this is because of different usernames in EP and BI, why dont you go for user mapping.
    Anyways, on restriction of reference syetms is that you can have ONLY ONE reference system defined in portal. In you case you can only have the BI system defined.
    Hope this helps!!

  • A question about compatiblilty of JDBC

    Hi, there,
    I have a question about JDBC 3.0 in JDK1.4.1.
    We build a .jar using JDK1.4.1 and this .jar file
    provides JDBC 3.0 interface.
    I then tried to call the interface under JDK1.3.1
    but it keeps asking me about the getParameterMetaData()
    in PreparedStatement.
    (The error message like this:
    Exception in thread "main" java.lang.NoClassDefFoundError: java/sql/ParameterMetaData dbmaker.sql.JdbcOdbcConnection.prepareStatement(JdbcOdbcConnection.java:257)
    I did implement the getParameterMetaData() method,
    but I didn't call this method in my testing program.
    It's quite strange since when JDK1.2 was release,
    we implemented the getBlob() method in
    ResultSet class and there's no problem when we
    use JDK1.1 run time to call this ResultSet object.
    Could any one tell me why? Is this caused by a
    compatibility problem between JDK1.4 and the
    older versions of JDK?

    Hi, there,
    Let me outline the condition by examples so that maybe you can help me. PLEASE! Could somebody tell us what's wrong?
    - CASE 1:
    In JDK1.2, we implemented a new method getBlob which returns the type of Blob (this is done according to JDBC 2.0 specification.) in ResultSet class. We can use the .jar compiled by jdk1.2 in jdk1.1 environment.
    e.g. We make a xyz.jar by jdk1.2 and the xyz.jar includes new method getBlob in ReaultSet class. Then, one java application including ResultSet class CAN run under jdk1.1 with xyz.jar, if the method ResultSet.getBlob() is not called.
    - CASE 2:
    BUT, the following case which is the same as in the above condition will fail in jdk1.3 environment.
    In JDK 1.4, we implemented a new method getParameterMetaData() which returns the type of ParameterMetaData. (BTW, this is done according to JDBC 3.0 specification.) in PreparedStatement class. We CANNOT use the .jar compiled by jdk1.4 in jdk1.3 environment.
    e.g. We make a ttt.jar by jdk1.4 and ttt.jar includes the new method getParameterMetaData() in PreparedStatement class. Then, one java application including PreparedStatement class CANNOT be run under jdk1.3 with ttt.jar, even when the method PreparedStatement.getParameterMetaData() is not called.

  • Question about SOAPBody # extractContentAsDocument()

    Hi java experts,
    I have a question about a method SOAPBody # extractContentAsDocument().
    According to its javadoc,
    http://docs.oracle.com/javase/6/docs/api/javax/xml/soap/SOAPBody.html#extractContentAsDocument%28%29
    when you use this method, "The child SOAPElement is removed as part of the process",
    but when I use this method to get a SOAPBody's full content as XML, with several kind of JVM,
    it seems like I can perfectly retrieve its all children elements without any loss.
    So I can't get what the javadoc is meaning by "The child SOAPElement is removed".
    Does anyone know anything about this?
    Thanks and regards

    It seems that original SOAPBody element is erased after the method invocation. To restore it, you need to call the .addDocument(Document doc) method passing the original or changed body as Document.

  • Some random questions about integration features

    Greetings,
    after working for a few weeks with Autovue's ISDK (web server) and having some sucess with its integration with our custom CMS, I have a few random questions about what can be done and what can't be done. So, instead of opening many new threads, I'll post them here together.
    1) Translation. We are localised in Russia, and its translation is incomplete. I have found a tra_en.properties file in AutoVue/bin, and a description about how to create a properties file for custom actions. But no information about how to translate to other languages - and russian translation appears to be packed within the jar of the applet. Is there a clean way to translate, or refine the current translation, so we don't get a mix of russian and english commands in the applet? Because my tries using EXTRABUNDLES have failed, as I don't want to add a bundle for extra actions, but to replace it for existing ones.
    2) Attachments in markups. Markups allow to attach other files, but since our CMS is custom, we only get the option to attach files from our local drives. We did no browse integration with the CMS, as people with different levels of permission will have different access to files there, and we considered unnecessary to provide that level of integration. We are considering to remove this action from the GUI, but before that I'd like to evaluate how hard would it be to generate an upload file action, so the attached file would be stored in the custom CMS and linked to it so the whole thing worked. My guess is "it will be hard and time consuming", so for now, we are considering to delete this feature in our integration.
    3) Is there a way to resize the Open markup dialog? We have several properties displayed, and fit well within a standard screen, but the dialog is small and you have to scroll the table to see all properties.
    Thanks for any assistance with these issues

    As always, thanks for the fast answer, Artash.
    Yes, now I see attachments are stored inside the markup file. The problem is, when I open markup mode for the attachment, since the attachment uses some kind of default access method, my url's from the integration with the background CMS are broken completely. I believe the ideal state here would be to make some kind of inner markup for the attachment, maybe stored within the original markup file along the attached file. Or maybe it works that way, and I need to access it with the default gui action instead of my custom one. If that is the case, is there any way to tell the gui file how to differentiate a standard opened file from an attached one? If so, the issue has solution. If not... Well, then maybe something escapes me.
    Edited by: Jordi Bosch on Apr 6, 2012 12:27 AM

  • A very simple question about WF

    hi experts
    I would like to ask a question about workflow
    as u may know there is 'Loop' step in workflow, but I am confused when should I use Loop?
    Is this step used for processing internal table?  if yes, why shouldn't I create a custom BOR method and pass the entire internal table to the method?
    many thanks

    hi
    loop step for not process the internal table,
    this is used to process the some steps repetely until condition True or False.
    we have two loop steps is there
    WHILE AND UNTIL.
    Thanks
    sitaram

  • Question about using container class - Map

    hi all
    i have a question about the following :
    i have two sets of data, both use a common filed as key for the map:
    A = {a,b,d,f,g,h} and B = {a,d,e,g,i,k}, each key has a value associated with.
    i need to find out the commonality, and the difference - i.e fields are in map A but not in Map B, and some fields that are in B but not in A. is there any quick method that comes with the collection class that can calculate this? thanks

    yes, the keyset will be used to access values.
    so, SetA.retainAll(SetB) will modify the SetA so that it contains keys that are in both SetA and SetB - the intersection.
    and SetA.removeAll(SetB) will modify the SetA so that it only contains keys that are in SetA, but not in SetB?
    correct?

  • Question about sql batch process in java app

    hi all
    i have few questions about using batch process in the java.sql package. the addBatch method can take sql statements like inserts or updates. can we use a mixture of insert and update then? can we use prepared statement for this? it's just for performance consideration. thanks in advance.

    hi all
    i have few questions about using batch process in the
    java.sql package. the addBatch method can take sql
    statements like inserts or updates. addBatch() is a method that has no parameters. It doesn't 'add' sql statements.
    can we use a
    mixture of insert and update then? can we use
    prepared statement for this? it's just for
    performance consideration. thanks in advance.The point of batching is that you take something that is invariant and then 'add' a variant part.
    Thus a single insert has an invariant part (the table and specific columns) and a variant part (the data for each row by column.)
    You can use anything that is valid SQL (for jdbc, driver, database) and use it presuming your database allows that particular usage in batching. But that does require some regular pattern - it won't work if your usage is random. Nor will it work if some statements need to be executed only some of the time. Finally also note that transaction processing will often require smaller chunks - you can't insert a million rows in one batch.

Maybe you are looking for

  • X220 self-wakes from sleep

    For the past week, my Lenovo x220 wakes from sleep while it is charging overnight or even in my laptop bag while it is "resting". Has anyone else had this issue? Any suggestions for a fix (other than putting it in hibernate, which would negate one of

  • Still can't get realtime temp logging

    I have been trying to get a chart showing temperature vs real time of the measurment, for example temperature vs the time (hh:mm:ss) of the measurement All my graphs start at 7 am 1903. I have seeded the XScale.minimum and XScal.increment properties

  • Photoshop CS3 hangs on open -  NO DVD inserted!

    I just installed 10.5.2 and NOW PS hangs at open. The other apps had a problem but dragging out the plist for them corrected them. I tried opening PS with another and with that user it crashed and gave a box to notify Adobe. I also ran the CS3 update

  • Windows 8 Internet explorer only- an error occured

    I am using windows 8. NOT 8.1. I have tested flash player in firefox and chrome. They both work fine. The only browser with a problem is, of course, microsoft's internet explorer. I have the latest version of everything. I have tried uninstalls and r

  • Can I send email address, message, etc. to TB from another application via DLL

    I have an application written in Omnis Studio version 4.X. It has the ability to act as a email client but only supports simple password authentication. I can get around this on the Mac by using AppleScript to send the contents of the email, to & fro