I found following: Some content from the Servlet Specification:
Instantiate an instance of each servlet identified by a <servlet> element that includes a <load-on-startup> element in the order defined by the load-on-startup element values, and call each servlet instance�s init() method.
The load-on-startup element indicates that this servlet should be loaded (instantiated and have its init() called) on the startup of the web application.
The order of loading the servlets is one way dependent on the entries in the web.xml as you give.
If two or more servlets have the same value of <load-on-startup> element, then it purely depends on the container!
As per the Servlet 2.4 spec section SRV.13.3 Deployment Descriptor, it says,
The load-on-startup element indicates that this servlet should be loaded (instantiated and have its init() called) on the startup of the web application. The optional contents of these element must be an integer indicating the order in which the servlet should be loaded. If the value is a negative integer, or the element is not present, the container is free to load the servlet whenever it chooses.If the value is a positive integer or 0, the container must load and initialize the servlet as the application is deployed. The container must guarantee that servlets marked with lower integers are loaded before servlets marked with higher integers. The container may choose the order of loading of servlets with the same load-on-start-up value.
Also in subsection 10.servlet Element of the section SRV 13.4 Deployment Descriptor Diagram, it confirms the same as
The container may choose the order of loading of servlets with the same load-on-startup value.