types of synchronization code example
Example 1: synchronization program in java
class First
{
synchronized public void display(String msg)
{
System.out.print ("["+msg);
try
{
Thread.sleep(1000);
}
catch(InterruptedException e)
{
e.printStackTrace();
}
System.out.println ("]");
}
}
class Second extends Thread
{
String msg;
First fobj;
Second (First fp,String str)
{
fobj = fp;
msg = str;
start();
}
public void run()
{
fobj.display(msg);
}
}
public class MyThread
{
public static void main (String[] args)
{
First fnew = new First();
Second ss = new Second(fnew, "welcome");
Second ss1= new Second(fnew,"new");
Second ss2 = new Second(fnew, "programmer");
}
}
Example 2: handling synchronization
- Synchronization is making sure our driver
and browser are on the same page.
- Since selenium browser driver is a lot
faster compared to the browsers , we use
different types of waits to make sure
selenium is synchronized with browsers.
There are 3 wait types to handle synchronization
issue from selenium;
1- Implicit Wait
Everytime we are trying to locate a webelement
is triggered. By default wait time is 0 second.
If we set the time to 10 seconds, and our driver
not able to find element, it will count for
given time. If element findst the webelement
it doesn't throw an exception.
2- Explicit Wait & 3- Fluent Wait
Both explicit and fluent wait is waiting for
explicit condition to happen
Like:
-elementIsDisplayed
-titleIs()
-visibilityOf
-elementToBeClickable
I use explicit wait in my framework
**THREAD.SLEEP
There is also thread.sleep comes from java library.
I always avoid to use it since it makes my
automation framework slower and heavier.
Thread.sleep basically holds the whole execution
for given time without any condition