Invokelater In Addition To Invokeandwait Inwards Coffee Swing (An Illustration Tutorial)
Saturday, July 28, 2018
Add Comment
Everyone who is doing programming inwards coffee swing has to come upwardly across invokeAndWait as well as invokeLater provided past times SwingUtilites. In this coffee swing tutorial nosotros volition larn nearly both invokeLater() as well as invokeAndwait() method. In rootage exercise nosotros volition to a greater extent than oft than non focus on invokeLater as well as volition discovery answers to questions similar What is invokeLater, how to exercise invokelater inwards coffee swing, illustration of invokelater inwards swing etc acre inwards instant exercise of this invokeLater tutorial nosotros volition larn to a greater extent than nearly invokeAndWait method inwards coffee swing as well as volition larn Why nosotros demand InvokeAndWait, how to exercise InvokeAndWait method inwards coffee Swing as well as differences betwixt invokelater as well as invokeAndWait.
Finally, nosotros volition encounter a code illustration of both invokeLater as well as invokeAndWait inwards Swing as well as volition live on able to determine when to exercise invokeLater as well as when to exercise invokeAndWait acre doing Swing programming. We volition too encounter famous Swing interview questions "difference betwixt invokeLater as well as invokeAndWait" at the destination of the article.
Why produce nosotros demand InvokeLater method inwards Swing?
Before using invokelater or going deep nearly invokelater lets encounter why produce nosotros demand this method inwards swing utility class? As nosotros all know coffee swing is non threadsafe , yous tin non update swing element similar JButton, JLable , JTable or JTree from whatever thread , they all needs to live on updated from exactly ane thread as well as nosotros telephone telephone it Event Dispatcher thread or EDT inwards short. Event Dispatcher thread is used to homecoming graphics for coffee swing element as well as too procedure all events corresponding to a primal press, mouse click or whatever action. So if yous desire to update a detail swing element suppose label of a JButton from Yes to No yous demand to produce this inwards Event Dispatcher thread as well as for doing this yous demand InvokeLater. invokeLater is used to perform whatever draw of piece of job asynchronously on AWT Event Dispatcher thread.
What is invokeLater inwards Java Swing
The invokeLater() is a method inwards coffee on swing bundle as well as belongs to SwingUtilities class. Invokelater is used past times coffee swing developer to update or perform whatever draw of piece of job on Event dispatcher thread asynchronously.invokeLater has been added into Java API from swing extension as well as it belongs to SwingUtilities class.
How does invokeLater industrial plant inwards Java Swing
If yous encounter the signature of invokeLater method yous volition discovery that invokeLater takes a Runnable object as well as queues it to live on processed past times EventDispatcher thread. EDT thread volition procedure this asking alone after sorting out all AWT pending events or requests. Even if invokeLater is called straight shape Event dispatches thread processing of Runnable draw of piece of job all the same live on done alone after processing all pending AWT Events. An of import betoken to Federal Reserve annotation is that inwards illustration if the run method of Runnable draw of piece of job throws whatever exception as well as then AWT Event dispatcher thread volition unwind as well as non the electrical flow thread.
Why produce nosotros demand InvokeAndWait method inwards Swing
As nosotros know that Swing is non thread-safe as well as we tin non update the Swing element or GUI from whatever thread. If yous endeavor to update GUI shape whatever thread yous volition acquire unexpected number or exception, it could live on your GUI mightiness non live on visible or only disappeared. The alone method which is thread-safe inwards the swing is repaint() as well as revalidate(). On the other hand, InvokeAndWait allows us to update the GUI from EDT thread synchronously. InvokeAndWait method too belongs to swingUtility bird similar invokeLater.
How does InvokeAndWait industrial plant inwards Java Swing
If yous human face at the signature of invokeAndWait method yous volition encounter that it takes a Runnable object as well as run method of that Runnable is executed synchronously on EDT. This is a blocking telephone telephone as well as hold off until all pending AWT events acquire processed and run() method completes. Its a preferred means of updating GUI shape application thread.
An of import betoken to Federal Reserve annotation is that it should non live on called from EventDispatcher thread dissimilar invokeLater; it’s an fault because it volition number inwards guaranteed deadlock. because if yous cal invokeAndWait from EDT thread it volition live on an AWT lawsuit as well as caller of invokeAndWait volition hold off for EDT thread to consummate as well as EDT volition hold off for caller thread to live on completed hence they volition live on locked inwards deadlock. Its too of import to retrieve that if run() method of Runnable object throw an exception as well as then its caught inwards AWT EDT thread as well as rethrown every bit InvocationTargetException on caller thread.
Example of InvokeLater inwards Java Swing
Here is an illustration of invokeLater() inwards Swing which volition demonstrate that inwards the illustration of invokeLater application thread doesn’t block.
Runnable pickHighBetaStock = new Runnable() {
public void run() {
System.out.println("High beta Stock picked by " + Thread.currentThread());
}
};
SwingUtilities.invokeLater(pickHighBetaStock);
System.out.println("This mightiness good live on displayed earlier the other message. if Event-dispatcher thread is busy");
Example of using InvokeAndWait inwards Java Swing
In this illustration of InvokeAndWait, nosotros volition encounter that Application thread volition block until Runnable object passed to EDT has been executed.
final Runnable pennyStockPicker = new Runnable() {
public void run() {
System.out.println("pick penny Stock on " + Thread.currentThread());
}
};
Thread stockPicker = new Thread() {
public void run() {
try {
SwingUtilities.invokeAndWait(pennyStockPicker);
}
catch (Exception e) {
e.printStackTrace();
}
System.out.println("This volition destination after pennyStockPicker thread because InvokeAndWait is block call" + Thread.currentThread());
}
};
stockPicker.start();
Difference on InvokeLater vs InvokeAndWait inwards Swing
Swingutilies provides us 2 methods for performing whatever draw of piece of job inwards Event dispatcher thread. Now let's encounter what the departure betwixt invokeLater as well as InvokeAndWait is as well as when to exercise invokeLater.
1) InvokeLater is used to perform a draw of piece of job asynchronously inwards AWT Event dispatcher thread while InvokeAndWait is used to perform draw of piece of job synchronously.
2) InvokeLater is non-blocking telephone telephone acre InvokeAndWait volition block until the draw of piece of job is completed.
3) If the run method of Runnable target throws an Exception as well as then in the illustration of invokeLater EDT threads unwinds acre inwards the illustration of the invokeAndWait exception is caught and rethrown every bit InvocationTargetException.
4) InvokeLater tin live on safely called from Event Dispatcher thread acre if yous telephone telephone invokeAndWait from EDT thread yous volition acquire an fault because every bit per coffee documentation of invokeAndWait it clearly says that "this asking volition live on processed alone after all pending events" as well as if yous telephone telephone this from EDT this volition driblet dead ane of pending lawsuit hence its a deadlock because caller of InvokeAndWait is waiting for completion of invokeAndWait acre EDT is waiting for caller of InvokeAndWait.
5) InvokeLater is to a greater extent than flexible inwards damage of user interaction because it exactly adds the draw of piece of job inwards queue as well as allow the user to interact amongst the organization acre invokeAndWait is a preffered means to update the GUI from application thread.
In Summary, nosotros tin exactly state that since Swing is non thread-safe as well as nosotros cannot update different Swing GUI components on whatever thread other-than Event dispatcher Thread nosotros demand to exercise InvokeAndWait or InvokeLater to schedule whatever Runnable draw of piece of job for AWT Event dispatcher Thread. InvokeAndWait is synchronous as well as blocking telephone telephone as well as hold off until submitted Runnable completes acre InvokeLater is asynchronous as well as non-blocking it volition exactly submit draw of piece of job as well as exit."
That’s all on InvokeAndWait() as well as InvokeLater() method of SwingUtilities class. They are real of import acre doing GUI programming on Swing every bit good every bit this is real pop interview questions which I receive got discussed inwards my latest post service on swing interview questions asked inwards Investment banks.
Please permit me know your sense amongst InvokeLater() as well as InvokeAndWait() method as well as whatever number yous flora acre using them which would worth live on mentioning here.
Further Reading
Java Swing (GUI) Programming: From Beginner to Expert
How to override equals method inwards Java
What is Abstraction inwards coffee ?
How to convert String to int inwards Java
0 Response to "Invokelater In Addition To Invokeandwait Inwards Coffee Swing (An Illustration Tutorial)"
Post a Comment