Hi,

I just want to add a note to the testing in my last email, because I can
not explain [0] and [1]  by myself :-)

[0]
If I use both the following:
Object sync=new Object();
                   or
private static Object sync=new Object();

I get the same result!  :-)  and when I:
System.out.println("P1="+request.getParameter("P1")+"
thread="+Thread.currentThread()+"    sync="+sync);

I always get the the same sync -- "java.lang.Object@697676"  :-) (even if I
restart my Servelt engine).    I guess now my Servelt engine only make
ONE instance of my class -- servlet_ht. But if so, how to explain [1] ?


[1]    If I don't do the following:
synchronized(sync){
...
sync.notifyAll();
}

I will get the "cross" of "11111" and "22222" in the
"DOS Command Prompt" of my Servlet engine


Could anybody explain [0] and [1] ?     Thanks in advance!



100 cent Receiver -- Bo :-)
Oct.06, 2000

Bo Xu wrote:

> Hi ,
>
> This morning I did a simple testing about
> [cocurrent programming] + [Servlet]  :-)
>
> 0
>       a
>             *  I use J2SE1.3 + Jsdk2.1 as Servlet engine
>             *  I use J2SE1.3  to start two Java Applications
>       b    I use 3 "DOS Command Prompt" :
>                *  one for Servlet engine
>                *  one for the first Java Application which use URLConnection
>                    to communicate to my Servlet.
>                *  one for the second Java Application which use URLConnection
>                    to communicate to my Servlet.
>
> 1
>       a   the the following is my Servlet code:
> *************************************************
> import javax.servlet.*;
> import javax.servlet.http.*;
>
> import java.io.*;
> import java.net.*;
> import java.util.*;
>
> public class servlet_ht extends HttpServlet {
> ObjectOutputStream os=null;
> ObjectInputStream is=null;
> String s_tmp=null;
>
> Object sync=new Object();
>
> public void init(ServletConfig config) throws ServletException {
> super.init(config);
> }
>
> public void doGet(HttpServletRequest request, HttpServletResponse response)
> throws ServletException, IOException{
> int i=0;
> synchronized(sync){
>
> System.out.println("get a GET...");
> try{
> response.setContentType("application/octet-stream");
> os=new ObjectOutputStream( response.getOutputStream() );
> os.writeObject("in GET=aaaaa");
> os.flush();
>
> os.close(); os=null;
>
>    while(i<10){
>    System.out.println("P1="+request.getParameter("P1")+"
> thread="+Thread.currentThread() );
>    i++;
>    Thread.currentThread().sleep(1000);
>    }
> }catch(Exception e){System.out.println("e="+e);}
>
> sync.notifyAll();
> }
>
> }
>
> public void doPost(HttpServletRequest request, HttpServletResponse response)
> throws ServletException, IOException{
> System.out.println("get a POST...");
> ...
> }
>
> public String getServletInfo(){
> return "servlet_ht";
> }
>
> }//class
> *************************************************
>
>       b   the the following is my Java Application code:
> *************************************************
> import java.applet.Applet;
>
> import java.net.*;
> import java.io.*;
>
> public class applet_ht extends Applet  {
>
> String input=null;
>
> public void init() {
> URL url=null;
> //HttpURLConnection con=null;
> URLConnection con=null;
> ObjectOutputStream os=null;
> ObjectInputStream is=null;
> String s_tmp=null;
>
> try{
> url=new URL("http://xxx.xxx.xxx.xxx:8080/servlet/servlet_ht?P1="+input);
> con=(URLConnection)url.openConnection();
> //con=(HttpURLConnection)url.openConnection();
> //con.setRequestMethod("GET");
> con.setUseCaches(false);
> con.setRequestProperty("CONTENT_TYPE", "application/octet-stream");
> con.setDoInput(true);
> con.setDoOutput(true);
>
> is=new ObjectInputStream(con.getInputStream());
> s_tmp=(String)is.readObject();
> System.out.println("in send, return from servlet ="+s_tmp);
> //s_tmp=null;
>
> is.close(); is=null;
> //os.close(); os=null;
>
> }catch(Exception e){System.out.println("e="+e);}
>
> }
>
> public static void main(String[] args) {
> applet_ht xxx=new applet_ht();
> xxx.input=args[0];
> xxx.init();
> }
>
> }
> *************************************************
>
> 2   The following is the "steps" of this testing:
>       [a]   I run "java applet_ht 11111" to start the
>              first Java Application JUST after I
>              run [b]
>       [b]   I run "java applet_ht 22222" to start the
>              second Java Application JUST after I
>              run [a]
>       [c]   I continue to do [a] and [b] :-) :-) :-) [ This
>              is a little bit like playing drum :-) ]
>
> 3
> 2   The following is the result of this testing:
>      Before my arms and fingers are sour, :-) :-) :-) I have
>      done many times of such testing:
>        a  in the "Command Prompt" of Servlet engine,
>           I always get 10 "11111" or 10 "22222",  I never
>           find the "cross :-)" of several "11111" and "22222".
>        b and every time the thread name  is different, for
>           example,
>            ...
>           Thread[Thread-10,5,main]
>           Thread[Thread-11,5,main]
>           Thread[Thread-12,5,main]
>           ...
>
> Can this testing prove that we can lock some codes
> in Servlet ? :-)   I hope so,  otherwise my arms are
> sour for nothing :-) :-) :-)
>
>  1.99999 cent provider -- Bo ArmStrong  :-) :-)
>
> Oct. 06, 2000
>
> ___________________________________________________________________________
> To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
> of the message "signoff SERVLET-INTEREST".
>
> Archives: http://archives.java.sun.com/archives/servlet-interest.html
> Resources: http://java.sun.com/products/servlet/external-resources.html
> LISTSERV Help: http://www.lsoft.com/manuals/user/user.html

___________________________________________________________________________
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff SERVLET-INTEREST".

Archives: http://archives.java.sun.com/archives/servlet-interest.html
Resources: http://java.sun.com/products/servlet/external-resources.html
LISTSERV Help: http://www.lsoft.com/manuals/user/user.html

Reply via email to