Help on (Possibly) false sharing on Multithreaded Java Programs

I encountered performance degrade going from 1 thread to 2 thread for embarrassing parallel programs.
Each thread heavily accesses (read/write) some object fields, but one object is not accessed by both threads.
However, because the hotspot JVM does not necessarily align the object according to cache line, it is possible to
have two objects share the same cache line. For example, o1 and o2 are two objects of class Foo:
class Foo {
Object A;
Object B;
Foo o1 = new Foo();
Foo o2 = new Foo();
The JVM may layout part of o1 (o1.B) and part of o2 (o2.A) in the same cache line ( --cach line  2 as shown below).
1111AAAA11111111111111111 -- cache line 1
1111BBBB11112222AAAA2222 -- cache line 2
22222222222222222BBBB2222 -- cache line 3
1: o1 2: o2
This cause a significant performance degradation due to false sharing between o1.A and o2.B.
Due to the indeterministic nature of the layout, I am not hit by the impact of false sharing for every run.
For some runs, I get 2x speedup as where were no false sharing. But occasionally, I get very bad performance.
The penalty of false sharing can be reduce by binding the two threads to cores that share the same L2 cache.
But this is not an acceptable solution because I want scalability beyond 2 threads and want to remove the
false sharing at all.
Traditional solution to avoid false sharing is either to align each object at the cache line boundary, or to pad the object
to have extra space at the beginning and the rear of each object.
I don't know how to do the alignment on the HotSpot JVM, if it is not impossible at all. Does anyone know to do achieve this?
For padding, I don't know the exact correct way to do this: I want to ensure that the padding fields inserted are
at the VERY beginning and the VERY rear of the object memory layout, instead of in the middle. I know JVM is free to
reorder the fields. Does anyone know how to pad a object correctly?
It would also be very helpful if anyone have any other opinions to avoid this kind of false sharing or whatever reason the bad performance might be.
Thanks,
Edited by: Grant@FDU on May 5, 2009 9:14 PM
Edited by: Grant@FDU on May 5, 2009 9:15 PM
Edited by: Grant@FDU on May 5, 2009 9:16 PM
Edited by: Grant@FDU on May 5, 2009 9:17 PM
Edited by: Grant@FDU on May 5, 2009 9:17 PM

You cannot guarantee that two objects will be consecutive in memory or that they will stay consecutive (as the object can be moved around to compact memory usage)
This sort of optimisation could be very premature. You are likely to find other factors are much more important. I suggest you write a realistic program and use a profiler to see where time is being consumed.

Similar Messages

  • Help for writing to excel file from Java Program

    Hi,
    I am new to Java and Java API. I need to write to some specific cells of an excel file from a Java Program. Please anyone help me or give some directions.
    Thanks,
    Reet

    Hi,
    I saw an example while searching in google about importing jxl.*. Could you direct me how I can import this package as java does not have it. I heard that jxl is much easier that POI although I am not new to both of them.
    Thanks,
    Priya

  • Help--How can I open only one java program at one time?

    How can I open only one java program(same program) in Windows at one time?

    In Java 1.5, you can use the JVM's own monitoring APIs to examine what other JVMs are running on the system, and what applications they're running.
    It's general and powerful, but complex. The socket/file/whatever approach is cleaner, and probably more suited to your usage.
    Don't bother trying to use the Windows task manager for this sort of thing. You have to write messy native code, and it isn't reliable after all that anyway.

  • Is it possible to run a normal java program in a servlet

    Well anyone knoe and if so how is it done? Cheers

    .> On my current project, a reporting component, we
    do
    in fact call a standalone program asychronouslyfrom
    our Servlet. The one scaling requirement that is
    dictating this is memory footprint. By using a
    standalone application, I can set the amount ofheap
    space the reporting component will be allowed touse.
    Thusfar, it uses swap/virtual memory when that
    t amount is exceeded, which is the intendedeffect:
    increase processing time to save memory. Saish, if you're breaking the rule it's because you
    have a good understanding and a good reason to do
    so.
    You said the magic word here: "asynchronous". I
    totally agree that having your app send a message to
    a MDB for asynch processing is appropriate. In this
    case, it sounds like it's the only way to do it due
    to the excessive memory requirement.
    We have an app running in production that does
    exactly that: send a message to an MDB to process
    something off-line. The user is sent to a page to
    continue their session while processing proceeds on
    another thread, another machine.
    It's the first time I've run into a memory scaling requirement like that. Our co-located facility only allows us '10% of CPU and no more then 128 mB'. So, to avoid crowding out other requests, we decided to calve the report process into an asynchronous, standalone application. I was kind of hoping we could do something slick with java.lang.ref to help with memory management, but the more I looked into it, the scarier it became!
    When I read the OP's post it made me think that s/he
    wanted to invoke Runtime.exec() to kick off a
    synchronous process. If s/he comes back and says
    that's the case, I'll stand by my answer. If they
    say asynch is what they need, they should follow the
    wisdom of Saish.
    I agree. The OP probably does not have this type of requirement. In the vast majority of cases, Duffy is correct. You probably should re-think your design if another standalone process is being invoked.
    PS - How's with you? I hope you and your family are
    all well.
    Doing great and had an awesome 4th o July weekend. Spent Saturday on a boat for seven hours. Though I look par-boiled today, it was a full-on treat.
    How's by you? Any Independence Day ribaldry or chicanery? :^)
    I've gotten through the AOP and JDBC chapters in "Pro
    Spring". Now I'm off to read about Hibernate again.
    Gotta be writing more code to truly master this,
    , especially on the UI side.This weekend, I did not get much time to continue my trek through the vast landscape of Spring. However, this week, I am moving towards knowledge sharing and documentation tasks, so I should have some time after work to keep learning.
    UI side? You mean Servlets/JSP/XSL? Or something more traditional like Swing?
    BTW, now I remember why I hate coming into work on off days (aside from the obvious): they don't turn on the @#$! A/C. I'm dying here today!
    - Saish

  • Need urgent help. Calling of exe files from java program

    This program can execute small .exe files that donot take inputs but doesn't work for exe files that takes input. what could be the problem.
    Server code :-
    import java.io.*;
    import java.net.*;
    public class Server1 {
         private Player[] players;
         private ServerSocket server;
         private ExecHelper exh;
         String command = null;
         String message = null;
         public Server1() {
              players = new Player[5];
              try {
                   server = new ServerSocket( 12345, 5 );
                   System.out.println("Server started...");
                   System.out.println("Waiting for request...");
              catch( IOException ioe ) {
                   ioe.printStackTrace();
                   System.exit( 1 );
         } //end Server constructor
         public void execute() {
              for( int i = 0; i < players.length; i++ )
              try {
                   players[i] = new Player( server.accept() );
                   players.start();
              catch( IOException ioe ) {
                   ioe.printStackTrace();
                   System.exit( 1 );
         public static void main( String args[] ) {
              Server1 ser = new Server1();
              ser.execute();
              System.exit( 1 );
         private class Player extends Thread {
              private Socket connection;
              private ObjectOutputStream output;
              private ObjectInputStream input;
              public Player( Socket socket ) {
                   connection = socket;
                   try {
                        input = new ObjectInputStream( connection.getInputStream());
                        output = new ObjectOutputStream( connection.getOutputStream());
                        output.flush();
                   catch( IOException ioe ) {
                        ioe.printStackTrace();
                        System.exit( 1 );
              public void run() {
                   try {
                        message = "Enter a command:";
                        output.writeObject( message );
                        output.flush();
                        do {
                             command = ( String ) input.readObject();
                             String osName = System.getProperty( "os.name" );
                             String[] cmd = new String[3];
                             if( osName.equals( "Windows 2000" )) {
                                  cmd[0] = "cmd.exe";
                                  cmd[1] = "/c";
                                  cmd[2] = command;
                             else if( osName.equals( "Windows NT" ) ) {
                             cmd[0] = "cmd.exe" ;
                             cmd[1] = "/C" ;
                             cmd[2] = command ;
                             Runtime rt = Runtime.getRuntime();
                             Process proc = rt.exec( cmd );
                             exh = new ExecHelper( proc, output, input);
                        } while( !command.equals( "TERMINATE" ) );
                   catch( Throwable t ) {
                        t.printStackTrace();
         } //end class Player
         public class ExecHelper implements Runnable {
         private Process process;
         private InputStream pErrorStream;
         private InputStream pInputStream;
         private OutputStream pOutputStream;
         private InputStreamReader isr;
         private InputStreamReader esr;
         private PrintWriter outputWriter;
         private ObjectOutputStream out;
         private ObjectInputStream in;
         private BufferedReader inBuffer;
         private BufferedReader errBuffer;
         private Thread processThread;
         private Thread inReadThread;
         private Thread errReadThread;
         private Thread outWriteThread;
         public ExecHelper( Process p, ObjectOutputStream output, ObjectInputStream input ) {
              process = p;
              pErrorStream = process.getErrorStream();
              pInputStream = process.getInputStream();
              pOutputStream = process.getOutputStream();
              outputWriter = new PrintWriter( pOutputStream, true );
              in = input;
              out = output;
              processThread = new Thread( this );
              inReadThread = new Thread( this );
              errReadThread = new Thread( this );
              outWriteThread = new Thread( this );
              processThread.start();
              inReadThread.start();
              errReadThread.start();
              outWriteThread.start();
         public void processEnded( int exitValue ) {
              try {
                   Thread.sleep( 1000 );
              catch( InterruptedException ie ) {
                   ie.printStackTrace();
         public void processNewInput( String input ) {
              try {
                   out.writeObject( "\n" + input );
                   out.flush();
                   catch( IOException ioe ) {
                   ioe.printStackTrace();
         public void processNewError( String error ) {
              try {
                   out.writeObject( "\n" + error );
                   out.flush();
         catch( IOException ioe ) {
                   ioe.printStackTrace();
         public void println( String output ) {
              outputWriter.println( output + "\n" );
         public void run() {
              if( processThread == Thread.currentThread()) {
                   try {
                        processEnded( process.waitFor());
                   catch( InterruptedException ie ) {
                        ie.printStackTrace();
              else if( inReadThread == Thread.currentThread() ) {
                   try {
                        isr = new InputStreamReader( pInputStream );
                        inBuffer = new BufferedReader( isr );
                        String line = null;
                        while(( line = inBuffer.readLine()) != null ) {
                                  processNewInput( line );
                   catch( IOException ioe ) {
                        ioe.printStackTrace();
              else if( outWriteThread == Thread.currentThread() ) {
                   try {
                        String nline = null;
                        nline = ( String ) in.readObject();
                        println( nline );
                   catch( ClassNotFoundException cnfe ) {
                   //     cnfe.printStackTrace();
                   catch( IOException ioe ) {
                        ioe.printStackTrace();
              else if( errReadThread == Thread.currentThread() ) {
                   try {
                        esr = new InputStreamReader( pErrorStream );
                        errBuffer = new BufferedReader( esr );
                        String nline = null;
                        while(( nline = errBuffer.readLine()) != null ) {
                             processNewError( nline );
                   catch( IOException ioe ) {
                        ioe.printStackTrace();
    Client code :-
    // client.java
    import java.io.*;
    import java.net.*;
    public class Client {
         private ObjectOutputStream output;
         private ObjectInputStream input;
         private String chatServer;
         private String message = "";
         private Socket client;
         public Client( String host ) {
              chatServer = host;
         private void runClient() {
              try {
                   connectToServer();
                   getStreams();
                   processConnection();
              catch( EOFException eofe ) {
                   System.err.println( "Client terminated connection ");
              catch( IOException ioe ) {
                   ioe.printStackTrace();
              finally {
                   closeConnection();
         } //end method runClient
         private void connectToServer() throws IOException {                                                                 
              System.out.println( "Attempting connection...\n");
              client = new Socket( InetAddress.getByName( chatServer ), 12345);
              System.out.println( "Connected to : "+ client.getInetAddress().getHostName());
         private void getStreams() throws IOException {
              output = new ObjectOutputStream( client.getOutputStream());
              output.flush();
              input = new ObjectInputStream( client.getInputStream());
         private void processConnection() throws IOException {
         while( true ){
                   try {
                        message = ( String ) input.readObject();
                        System.out.print( message );
                        InputStreamReader isr = new InputStreamReader( System.in);
                        BufferedReader br = new BufferedReader( isr );
                        String line = null ;
                        line = br.readLine();
                             output.writeObject(line);
                             output.flush();
                   catch( ClassNotFoundException cnfe) {
                        System.out.println( "\nUnknown object type received");
         } //end processConnection
         private void closeConnection() {
              System.out.println( "\nClosing connection");
              try {
                   output.close();
                   input.close();
                   client.close();
              catch( IOException ioe ) {
                   ioe.printStackTrace();
         public static void main( String args[] ) {
              Client c;
              if( args.length == 0 )
                   c = new Client( "127.0.0.1" );
              else
                   c = new Client( args[0] );
              c.runClient();

    maybe you should
    1. Use code tags so the posted code is understandable
    2. Stop marking your post urgent, that just puts peoples backs up
    3. Stop posting the question every couple of hours on every imaginable forum.. Post it once and start a single dialog

  • Challange for you, help for me! java program

    I am a beginning java student and desparately (again) in help of someone who will check my java program. See below what they want from me, and try to make a program of it that works in all the ways that are asked. Thank you for helping me, i am running out of time.
    Prem Pradeep
    [email protected]
    Catalogue Manager II
    Specification:
    1.     Develop an object to represent to encapsulate an item in a catalogue. Each CatalogueItem has three pieces of information: an alphanumeric catalogue code, a name, and a price (in dollars and cents), that excludes sales tax. The object should also be able to report the price, inclusive of a 15% sales tax, and the taxed component of the price.
    2.     Data input will come from a text file, whose name is passed in as the first command-line argument to the program. This data file may include up to 30 data items (the program will need to be able to support a variable number of actual items in the array without any errors).
    3.     The data lines will be in the format: CatNo:Description:Price Use a StringTokenizer object to separate these data lines into their components.
    4.     A menu should appear, prompting the user for an action:
    a.     Display all goods: this will display a summary (in tabulated form) of all goods currently stored in the catalogue: per item the category, description, price excluding tax, payable tax and price including tax.
    b.     Dispfay cheapest/dearest goods: this will display a summary of all the cheapest and most expensive item(s) in the catalogue. In the case of more than one item being the cheapest (or most expensive), they should all be listed.
    c.     Sort the list: this will use a selection sort algorithm to sort the list in ascending order, using the catalogue number as the key.
    d.     Search the list: this will prompt the user for a catalogue number, and use a binary search to find the data. If the data has not yet been sorted, this menu option should not operate, and instead display a message to the user to sort the data before attempting a search
    5.     Work out a way to be able to support the inc tax/ex tax price accessors, and the tax component accessor, without needing to store any additional information in the object.
    6.     Use modifiers where appropriate to:
    a.     Ensure that data is properly protected;
    b.     Ensure that the accessors and mutators are most visible;
    c.     The accessors and mutators for the catalogue number and description cannot be overridden.
    d.     The constant for the tax rate is publicly accessible, and does not need an instance of the class present in order to be accessible.
    7.     The program should handle all exceptions wherever they may occur (i.e. file 1/0 problems, number formatting issues, etc.) A correct and comprehensive exception handling strategy (leading to a completely robust program) will be necessary and not an incomplete strategy (i.e. handling incorrect data formats, but not critical errors),
    Sample Execution
    C:\> java AssignmentSix mydata.txt
    Loading file data from mydata.txt ...17 item(s) OK
    CATALOGUE MANAGER: MAIN MENU
    ============================
    a) display all goods b) display cheapest/dearest goods
    c) sort the goods list d) search the goods list
    e) quit
    Option: d
    The goods cannot be searched, as the list is not yet sorted.
    CATALOGUE MANAGER: MAIN MENU
    ============================
    a) display all goods b) display cheapest/dearest goods
    c) sort the goods list d) search the goods list
    e) quit
    Option: b
    CHEAPEST GOODS IN CATALOGUE
    Cat      Description      ExTax      Tax      IncTax
    BA023      Headphones      23.00      3.45      26.45
    JW289      Tape Recorder     23.00      3.45      26.45
    MOST EXPENSIVE GOODS IN CATALOGUE
    Cat      Description      ExTax      Tax      IncTax
    ZZ338      Wristwatch      295.00 44.25      339.25
    CATALOGUE MANAGER: MAIN MENU
    ============================
    a) display all goods b) display cheapest/dearest goods
    c) sort the goods list d) search the goods list
    e) quit
    Option: c
    The data is now sorted.
    CATALOGUE MANAGER: MAIN MENU
    ============================
    a) display all goods b) display cheapest/dearest goods
    c) sort the goods list d) search the goods list
    e) quit
    Option: d
    Enter the catalogue number to find: ZJ282
    Cat Description ExTax Tax IncTax
    ZJ282 Pine Table 98.00 14.70 112.70
    CATALOGUE MANAGER: MAIN MENU
    ============================
    a) display all goods b) display cheapest/dearest goods
    c) sort the goods list d) search the goods list
    e) quit
    Option: e
    Here you have the program as far as I could get. Please try to help me make it compact and implement a sorting method.
    Prem.
    By the way: you can get 8 Duke dollars (I have this topic also in the beginnersforum)
    //CatalogueManager.java
    import java.io.*;
    import java.text.DecimalFormat;
    import java.util.StringTokenizer;
    public class CatalogueManager {
    // private static final double TAXABLE_PERCENTAGE = 0.15;
    // Require it to be publicly accessible
    // static means it is class variable, not an object instance variable.
    public static final double TAXABLE_PERCENTAGE = 0.15;
    private String catalogNumber;
    private String description;
    private double price;
    /** Creates a new instance of CatalogueManager */
    public CatalogueManager() {
    catalogNumber = null;
    description = null;
    price = 0;
    public CatalogueManager(String pCatalogNumber, String pDescription, double pPrice) {
    catalogNumber = pCatalogNumber;
    description = pDescription;
    price = pPrice;
    // the mutators must be most visible
    // the final keyword prevents overridden
    public final void setCatalogNumnber(String pCatalogNumber) {
    catalogNumber = pCatalogNumber;
    // the mutators must be most visible
    // the final keyword prevents overridden
    public final String getCatalogNumber() {
    String str = catalogNumber;
    return str;
    // the mutators must be most visible
    // the final keyword prevents overridden
    public final void setDescription(String pDescription) {
    description = pDescription;
    // the accessors must be most visible
    // the final keyword prevents overridden
    public final String getDescription() {
    String str = description;
    return str;
    // If the parameter is not a double type, set the price = 0;
    // the mutators must be most visible
    public boolean setPrice(String pPrice) {
    try {
    price = Double.parseDouble(pPrice);
    return true;
    catch (NumberFormatException nfe) {
    price = 0;
    return false;
    // the accessors must be most visible
    public double getPrice() {
    double rprice = price;
    return formatDouble(rprice);
    double getTaxAmount(){
    double rTaxAmount = price * TAXABLE_PERCENTAGE;
    return formatDouble(rTaxAmount);
    double getIncTaxAmount() {
    double rTaxAmount = price * (1 + TAXABLE_PERCENTAGE);
    return formatDouble(rTaxAmount);
    double formatDouble(double value) {
    DecimalFormat myFormatter = new DecimalFormat("###.##");
    String str1 = myFormatter.format(value);
    return Double.parseDouble(str1);
    public static void main(String[] args) throws IOException {
    final int MAX_INPUT_ALLOW = 30;
    int MAX_CURRENT_INPUT = 0;
    FileReader fr;
    BufferedReader br;
    CatalogueManager[] catalogList = new CatalogueManager[MAX_INPUT_ALLOW];
    String str;
    char chr;
    boolean bolSort = false;
    double cheapest = 0;
    double mostExpensive = 0;
    String header = "Cat\tDescription\tExTax\tTax\tInc Tax";
    String lines = "---\t-----------\t------\t---\t-------";
    if (args.length != 1) {
    System.out.println("The application expects one parameter only.");
    System.exit(0);
    try {
    fr = new FileReader(args[0]);
    br = new BufferedReader(fr);
    int i = 0;
    while ((str = br.readLine()) != null) {
    catalogList[i] = new CatalogueManager();
    StringTokenizer tokenizer = new StringTokenizer(str, ":" );
    catalogList.setCatalogNumnber(tokenizer.nextToken().trim());
    catalogList[i].setDescription(tokenizer.nextToken().trim());
    if (! catalogList[i].setPrice(tokenizer.nextToken())){
    System.out.println("The price column cannot be formatted as dobule type");
    System.out.println("Application will convert the price to 0.00 and continue with the rest of the line");
    System.out.println("Please check line " + i);
    if (catalogList[i].getPrice() < cheapest) {
    cheapest = catalogList[i].getPrice();
    if (catalogList[i].getPrice() > mostExpensive) {
    mostExpensive = catalogList[i].getPrice();
    i++;
    fr.close();
    MAX_CURRENT_INPUT = i;
    catch (FileNotFoundException fnfe) {
    System.out.println("Input file cannot be located, please make sure the file exists!");
    System.exit(0);
    catch (IOException ioe) {
    System.out.println(ioe.getMessage());
    System.out.println("Application cannot read the data from the file!");
    System.exit(0);
    boolean bolLoop = true;
    BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));
    do {
    System.out.println("");
    System.out.println("CATALOGUE MANAGER: MAIN MENU");
    System.out.println("============================");
    System.out.println("a) display all goods b) display cheapest/dearest goods");
    System.out.println("c) sort the goods list d) search the good list");
    System.out.println("e) quit");
    System.out.print("Option:");
    try {
    str = stdin.readLine();
    if (str.length() == 1){
    str.toLowerCase();
    chr = str.charAt(0);
    switch (chr){
    case 'a':
    System.out.println(header);
    System.out.println(lines);
    for (int i = 0; i < MAX_CURRENT_INPUT; i++){
    System.out.println(catalogList[i].getCatalogNumber() + "\t" +
    catalogList[i].getDescription() + "\t" +
    catalogList[i].getPrice() + "\t" +
    catalogList[i].getTaxAmount() + "\t" +
    catalogList[i].getIncTaxAmount());
    System.out.println("");
    break;
    case 'b':
    System.out.println("");
    System.out.println("CHEAPEST GOODS IN CATALOGUE");
    System.out.println(header);
    System.out.println(lines);
    for (int i = 0; i < MAX_CURRENT_INPUT; i++){
    if (catalogList[i].getPrice() == cheapest){
    System.out.println(catalogList[i].getCatalogNumber() + "\t" +
    catalogList[i].getDescription() + "\t" +
    catalogList[i].getPrice() + "\t" +
    catalogList[i].getTaxAmount() + "\t" +
    catalogList[i].getIncTaxAmount());
    System.out.println("");
    System.out.println("MOST EXPENSIVE GODS IN CATALOGUE");
    System.out.println(header);
    System.out.println(lines);
    for (int i = 0; i < MAX_CURRENT_INPUT; i++){
    if (catalogList[i].getPrice() == mostExpensive) {
    System.out.println(catalogList[i].getCatalogNumber() + "\t" +
    catalogList[i].getDescription() + "\t" +
    catalogList[i].getPrice() + "\t" +
    catalogList[i].getTaxAmount() + "\t" +
    catalogList[i].getIncTaxAmount());
    System.out.println("");
    break;
    case 'c':
    if (bolSort == true){
    System.out.println("The data has already been sorted");
    else {
    System.out.println("The data is not sorted");
    break;
    case 'd':
    break;
    case 'e':
    bolLoop = false;
    break;
    default:
    System.out.println("Invalid choice, please re-enter");
    break;
    catch (IOException ioe) {
    System.out.println("ERROR:" + ioe.getMessage());
    System.out.println("Application exits now");
    System.exit(0);
    } while (bolLoop);

    One thing you're missing totally is CatalogueItem!! A CatalogueManager manages the CatalogueItem's, and is not an CatalogueItem itself. So at least you have to have this one more class CatalogueItem.
    public class CatalogueItem {
    private String catalogNumber;
    private String description;
    private double price;
    //with all proper getters, setters.
    Then CatalogueManager has a member variable:
    CatalogueItem[] items;
    Get this straight and other things are pretty obvious...

  • Need help in creating a java program

    Hi everyone.
    I'd like to say before i start about my problem, that i've only begun learning java and my teacher hasn't explained anything at all. He only showed us by doing it himself and then showing us the final version. I've searched a little on how to program but i get little success in finding a good tutorial.
    I need help creating a program which has been assigned to me due in a few days in which i can't contact my teacher for help.
    I need to write a java program which inputs 3 items. The number of kilometres you drove, the number of litres of gas you used and the price you paid for the gas. Then, the program must calculate the number of litres used per 100km driven, which is litres divided by kilometres times 100, how much it costs to drive 100km, which is the result (a) times the price per litre and the number of miles per American gallon of gas ( one American gallon = 3.785 litres, and one mile = 1.609 km.
    The program has to output my name, the inputs given, the results computed and a message saying "Program Complete".
    To give you what i've done to begin with, from what i understood, is:
    import javax.swing.JOptionPane;
    public class prog1
         public static void main(String args[])
              final double americanGallon = 3.785;
              final double mile = 1.609;
              kilometresDriven,
              gasUsed;
              priceOfLiterGas;
              System.out.println("My Name");
              System.out.println("Number of kilometres driven:");
              kilometresDriven = JOptionPane.showInputDialog ("Kilometres Driven");
              System.out.println("Number of Litres of gas used:");
              gasUsed = JOptionPane.showInputDialog ("Litres of gas used");
              System.out.println("Price of a liter of gas:");
              priceOfLiterGas = JoptionPane.showInputDialog("Price per liter");
    Up to now, that's all i've got. i know i'm wrong, but i'm not sure how to do this. Could someone give me an outline of what this program is suppose to look like?
    Thanks in advance.

    Here's an update on my program. I've worked on certain details and would need your comments whether it contains errors. I'd also want to know if it would work or not because i don't know how to check it on my computer.
    Here's the update:
    import javax.swing.JOptionPane;
    public class Prog1
    public static void main(String args[])
    String name;
    double kmDriven;
    double litresUsed;
    double pricePaidForGas;
    double priceOfALiter;
    name = JOptionPane.showInputDialog("Name");
    input = JOptionPane.showInputDialog("Number of km driven");
    kmDriven = Double.parseDouble (input);
    input = JOptionPane.showInputDialog("Number of litres of gas used");
    litresUsed = Double.parseDouble (input);
    input = JOptionPane.showInputDialog("Price paid for gas");
    pricePaidForGas = Double.parseDouble (input);
    input = JOptionPane.showInputDialog("Price of a litre of gas");
    priceOfALiter = Double.parseDouble (input);
    a = (litresUsed/kmDriven)*100;
    b = ((litresUsed/kmDriven)*100)*priceOfALiter);
    c = (kmDriven/1.609)
    System.out.println("Name:" + name);
    System.out.println("Number of litres used per 100km:" + a);
    System.out.println("Cost of driving 100km" + b);
    System.out.println("Number of miles per American Gallon of Gas:" + c);
    System.out.println("Program Complete");
    System.exit(0);
    Comments please.
    Thanks in advance

  • Which JAVA program should I download?

    I'm new to JAVA, can someone please tell me a good tutorial and program to create JAVA applets on?

    If you're new to Java, I suggest that you start first using simple text editor like Windows Notepad or Edit.com, because it may help you familiarize the Java language. Even though it's time-consuming, its worth, you can have a strong understanding about the Java language.
    You know what I�m having difficulties to say what I wanted to say because you know speaking English is my second language, so, to make it clear what I wanted to say, I will tell you a short story, so you listen...
    "I have a friend (she�s new to Java and she�s studying from other college school), she's using an IDE <software and company name is hidden / protected>, and yes that IDE is absolutely help her save her time developing her java program� the program is finished� time comes� she need to package her program for defense� packaging was successful� but when she run and test her program into one of the school�s computer� her program throws a bunch of exception (<software.company.********Tracker not found>) that isn�t occur when she�s running her program on her own PC (at home). She asked for my help (15mins before defense) and� 50% of the program crippled. I found that that IDE she�s using is semi-propriety and in the end, what happen is her group is assigned for re-defense, her time is not saved it is wasted."
    So be aware of the possible hidden price of time-saving routines and always be aware of what your IDE is doing under the cover. Also, your understanding might be impaired and you might feel helpless when you called on to debug your code in a computer with a minimum of tools without those cute IDE�s. Am I right? Correct me if I�m wrong. God bless you all ^_^
    For tutorial, see reply by kevljo.
    Thank you!

  • Java program in UNIX environment

    Hi All,
    Could you please help me with how to configure a java program in UNIX environment..
    that is to schedule it to run every day from cron..
    I need to know what are the basic things we require to achieve the above..
    I guess it is:
    A script
    A config file containing db login details
    oher than this I don?t know what is required plz help

    You can execute any jar or class file with cron. If you are using a jar you might use something like java -jar /usr/bin/myapp.jar .
    I use Linux, this is my area of expertise.
    Here is an online guide "for complete newbies" on how to set up cron.
    http://www.unixgeeks.org/security/newbie/unix/cron-1.html
    Hope it helps.

  • Connecting a Local Java Program with a Mysql Database Hosted on the Interne

    I need help. I want to connect a java program running on local user computers to read and write to a mysql database hosted in my domain by an internet service provider.
    What code do i use?
    How do i connect?

    http://java.sun.com/developer/onlineTraining/Database/JDBC20Intro/JDBC20.html
    You'll ned to downloda the JDBC driver file from MySQL, and check their docs for the format of the connection URL.

  • Java programming

    I am new to Java programming and using the compiler "javac" from the command prompt. When I get morethan 6 or 7 errors the screen scrolls so fast I cannot read the first error message. Is there a way I can use to pause the screen or redirect the error messages to a text file?
    My second question is how do you convert a double value to an integer value. I tried "intValue" but it's not working. Please reply as soon as possible.

    I am new to Java programming and using the compiler
    "javac" from the command prompt. When I get morethan 6
    or 7 errors the screen scrolls so fast I cannot read
    the first error message. Is there a way I can use to
    pause the screen or redirect the error messages to a
    text file?
    If its WIN 2000 or NT first execute your programs from batch files. last line of batch file should be "pause". while the window is still open, right click on the top left corner and increase the buffer size.
    If that doesent work you can try
    javac classfile > outputfile
    That might work on windows systems
    My second question is how do you convert a double
    value to an integer value. I tried "intValue" but it's
    not working. Please reply as soon as possible.Math.round()

  • Calling another application from a java program

    Hi, Java ppl.
    I wanted to know how can I call another program say a help application or an exe from a java program. anyone with any advice or a piece of code would help.
    Thanks
    Pradeep

    I had the same situation and I tried the code that you sugested and it works. I was wondering, what am I expecting in the while loop that appears after the int inp; statement? Is some data going to be displayed on the screen? How essential is to have that while loop after the calling the exec() method?
    Sorry for the amount of questions, I never tried this before.
    Best regards,
    Luis E.

  • How to call JAVA program having input & output parameter

    Hi Experts,
    Require ur help in calling a java program in ODI which has input parameter & I need to also get the output of the java program.
    I have a java program which I execute through command prompt with input parameters required for the program.
    Also I need to get the output of the same java program & need to pass it as input to another Java program.
    kindly help...how to implement the java program in ODI as I have not worked on Java.

    Hi experts,
    kindly help...

  • Running non-java programs

    Is it possible to run a non-java program(i.e program off desktop ) into a JFrame. Meaning that this program will only run in the specified JFrame.

    aggie09 wrote:
    Is it possible to run a non-java program(i.e program off desktop ) into a JFrame. Meaning that this program will only run in the specified JFrame.Don't create more than one thread for the same problem/question please. Since your previous post holds a bit more information about it, please continue there:
    [http://forums.sun.com/thread.jspa?threadID=5378613]

  • I am trying to get this java program to work

    I need your help, I am trying to get this java program to work. The program is long and massive, but I got stuck in the last point where the program checks if there are a double quotes or a comma in a string.
    The string is an URL retrieved from XML files (this is already done).
    There are 4 conditions:
    Case 1
    =====
    The URL string is of invalid format and contains no commas (,) and no double quotes (").
    Make no changes to the URL string.
    Case 2
    =====
    The URL string is of invalid format and contains 1 or more double quotes (") but no commas.
    Make no changes to the URL string.
    Case 3
    =====
    The URL string is of invalid format and contains 1 or more commas (,) but no double quotes.
    Modify the URL string so that it starts and ends with a double quote (").
    Case 4
    =====
    The URL string is of invalid format and contains 1 or more double quotes (") and one or more commas (,).
    Modify the URL string so that every double quote (") becomes a double double quote (""), and so that it starts and ends with a double quote (").
    ======
    then write the modified URL string to the CSV file.
    ======
    Examples:
    1. hello ---> hello
    2. hello "big" world ---> hello "big" world
    3. hello, world ---> "hello, world"
    4. hello "big,big" world ---> "hello ""big,big"" world"

    You can do the searching with String.indexOf() and then you can make replacements (like " with "") with String.replaceAll().
    As for adding leading and trailing ", that could be done with simple concatenation.

Maybe you are looking for

  • How do I add an iMovie project to the iPad?

    How do I add an iMovie project to the iPad? I have added the project to the pane in iTunes but the iPad has no way to import. I am using iOS 8.0.2. Also, when I open iMovie in the iPad, I see one project and video available but it is not shown in iTu

  • IPod touch 2gen - Sound issue

    Recently my iPod doesn't send any sound to the left headphone unless I press and hold the headphone jack in place. When i say press, i have to apply quite a bit of pressure. When i let go it stops sending sound to the left headphone again. It's not t

  • Storage Problems!!!URGENT

    Hello everybody I am writing an application that has to store information about people (name, surname, address, ... ). What is the best thing to use? Is it RMS or regular file storage? I am using the wireless toolkit version 1.0.4 with CLDC 1.0 and M

  • JPEG 2000 and Adobe Photoshop Elements 9

    I've recently switched from APE5 to APE9 and noticed that my .JP2 files wouldn't open in APE9. I also noticed that a JPEG 2000 file extension wasn't available as one of the File Type options that APE9 could open or save to. Am I missing something? Is

  • Error in PS/SD Price Interface

    Dear Colleagues Has anyone come accross the following error: No expenditure items found Message no. VPK1310 Diagnosis No expenditure items matching the selection were found. System Response No processing possible. Procedure Resource-related billing c