0

Hi to everyone

l have this assignment to do:

Synchronize access to the instance variable, accBalance. Because accBalance is a double and not an object, it cannot be used as the monitor. Use synchronized methods or synchronized blocks of code, as appropriate. Simultaniously test two threads. Because the threads can complete too quickly to determine if they are interfering with each other, delay the adding of a deposit by inserting the following code within the synchronized block or method:

try
{
Thread.currentThread().sleep(1000);
}
catch(InterruptedException e
{
}

I just don't get Synchronization. I've tried reading up on it but it just doesn't help me .This is the code that I have to Synchronize:

import javax.servlet.*;
    import javax.servlet.http.*;
    import java.io.*;
    import java.text.DecimalFormat;
     
    public class SyncBank extends HttpServlet
    {
    // Create Class Variable
    DecimalFormat myFormat = new DecimalFormat("$#,000.00");
    double accBalance = 0.00;
     
    public void doGet(HttpServletRequest req,HttpServletResponse res)
    throws ServletException, IOException
    {
    doPost(req,res);
    }
     
    public void doPost(HttpServletRequest req,HttpServletResponse res)
    throws ServletException, IOException
    {
     
    //Set MIME type of content returned to browser
    res.setContentType("text/html");
    PrintWriter out = res.getWriter();
     
    //Starts outputting the HTML Form
    out.println("<html><head>" +
    "<title>Online Bank Simulator</title>" +
    "</head><body>" +
    "<hr color=\"#808000\">" +
    "<center><h1>Banking Simulation</h1></center>" +
    "<form method=\"POST\" action=\"../servlet/HTMLBank\">" +
    "<center>Amount: <input type=\"text\" name=\"Amount\" size=\"20\"></center>");
     
    //Decides which action to take
    String action = req.getParameter("act");
     
    if(action != null)
    {
    if(action.equals("Deposit"))
    {
    double amount;
    String strAmount = req.getParameter("Amount");
    amount = Double.parseDouble(strAmount);
     
    if(amount <= 0.00)
    {
    out.println("<h2>Error: The amount is either null or a minus</h2>");
    }
    else
    {
    accBalance = accBalance + amount;
    out.println("<br><center>Balance:"+myFormat.format(accBalance)+" </center> <br>");
    }
    }
    else if(action.equals("Withdraw"))
    {
    double amount;
    String strAmount = req.getParameter("Amount");
    amount = Double.parseDouble(strAmount);
     
    if(amount <= 0.00)
    {
    out.println("<h2>Error: The amount is either null or a minus</h2>");
    }
    else
    {
    accBalance = accBalance - amount;
    out.println("<br><center>Balance:"+myFormat.format(accBalance)+" </center> <br>");
    }
    }
    else if(action.equals("Balance"))
    {
    out.println("<br><center>Balance:"+myFormat.format(accBalance)+" </center> <br>");
    }
    else
    {
    out.println("<br><center>Balance:"+myFormat.format(accBalance)+" </center> <br>");
    }
    }
    else
    {
    out.println("<br><center>Balance:"+myFormat.format(accBalance)+" </center> <br>");
    }
     
     
    //Outputs rest of HTML
    out.println("<table width=\"35%\" align=\"center\">" +
    "<tr><td width=\"33%\" align=\"center\">" +
    "<input type=\"submit\" name=\"act\" value=\"Deposit\">" +
    "</td>" +
    "<td width=\"33%\" align=\"center\">" +
    "<input type=\"submit\" name=\"act\" value=\"Withdraw\">" +
    "</td>" +
    "<td width=\"33%\" align=\"center\">" +
    "<input type=\"submit\" name=\"act\" value=\"Balance\">" +
    "</td></tr>" +
    "</table><br>" +
    "</form>" +
    "<hr color=\"#80800\">" +
    "</body></html>");
     
    }
    }
2
Contributors
1
Reply
2
Views
5 Years
Discussion Span
Last Post by NormR1
0

What tutorials have you read?
Go read the API doc for the wait and notify methods of the Object class. There is a discussion of Threads and monitors there.

For learning how to use synchronized and threads, you should write a simple program to use those features.
The code you posted has too much code that is NOT related to the problem.

Edited by NormR1: n/a

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.