<?xml version="1.0" encoding="UTF-8"?><rss
version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
> <channel><title>Comments on: Matlab and the Event Dispatch Thread (EDT)</title> <atom:link href="http://undocumentedmatlab.com/blog/matlab-and-the-event-dispatch-thread-edt/feed/" rel="self" type="application/rss+xml" /><link>http://undocumentedmatlab.com/blog/matlab-and-the-event-dispatch-thread-edt/</link> <description>Charting Matlab's unsupported hidden underbelly</description> <lastBuildDate>Mon, 21 May 2012 11:05:42 +0000</lastBuildDate> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.1.1</generator> <item><title>By: Responsive MATLAB GUI without calling drawnow() directly</title><link>http://undocumentedmatlab.com/blog/matlab-and-the-event-dispatch-thread-edt/#comment-80308</link> <dc:creator>Responsive MATLAB GUI without calling drawnow() directly</dc:creator> <pubDate>Fri, 06 Apr 2012 12:05:25 +0000</pubDate> <guid
isPermaLink="false">http://undocumentedmatlab.com/?p=1198#comment-80308</guid> <description>[...] make MATLAB UI responsive we have to call function drawnow which flushes Swing EDT queue, see also here and here. This is a known fact, so far so [...]</description> <content:encoded><![CDATA[<p>[...] make MATLAB UI responsive we have to call function drawnow which flushes Swing EDT queue, see also here and here. This is a known fact, so far so [...]</p> ]]></content:encoded> </item> <item><title>By: Daniel Shub</title><link>http://undocumentedmatlab.com/blog/matlab-and-the-event-dispatch-thread-edt/#comment-80124</link> <dc:creator>Daniel Shub</dc:creator> <pubDate>Wed, 04 Apr 2012 15:02:25 +0000</pubDate> <guid
isPermaLink="false">http://undocumentedmatlab.com/?p=1198#comment-80124</guid> <description>@Yair, while it might be a few years late. I was rereading the post and comments again when I saw your comment: &quot;It is indeed strange that drawnow actually flushes the EDT queue ... I don’t know of a way to circumvent this.&quot; I think you are looking for &quot;drawnow expose&quot; or maybe &quot;drawnow update&quot;</description> <content:encoded><![CDATA[<p>@Yair, while it might be a few years late. I was rereading the post and comments again when I saw your comment: &#8220;It is indeed strange that drawnow actually flushes the EDT queue &#8230; I don’t know of a way to circumvent this.&#8221; I think you are looking for &#8220;drawnow expose&#8221; or maybe &#8220;drawnow update&#8221;</p> ]]></content:encoded> </item> <item><title>By: Yair Altman</title><link>http://undocumentedmatlab.com/blog/matlab-and-the-event-dispatch-thread-edt/#comment-60249</link> <dc:creator>Yair Altman</dc:creator> <pubDate>Tue, 25 Oct 2011 09:16:59 +0000</pubDate> <guid
isPermaLink="false">http://undocumentedmatlab.com/?p=1198#comment-60249</guid> <description>@Arda - I believe that your code snippet can indeed be explained: You created a Java modal dialog (as explained &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://bit.ly/uv7ivn&quot; rel=&quot;nofollow&quot;&gt;here&lt;/a&gt;) on the EDT. The Matlab Command Window is itself a Java editor component on the EDT. Therefore, when the Dialog window halts the EDT, then the Matlab Command Window, Editor, Profiler, and any other Matlab GUI that runs on the EDT, also halt.</description> <content:encoded><![CDATA[<p>@Arda &#8211; I believe that your code snippet can indeed be explained: You created a Java modal dialog (as explained <a
rel="nofollow" target="_blank" href="http://bit.ly/uv7ivn" rel="nofollow">here</a>) on the EDT. The Matlab Command Window is itself a Java editor component on the EDT. Therefore, when the Dialog window halts the EDT, then the Matlab Command Window, Editor, Profiler, and any other Matlab GUI that runs on the EDT, also halt.</p> ]]></content:encoded> </item> <item><title>By: Ken</title><link>http://undocumentedmatlab.com/blog/matlab-and-the-event-dispatch-thread-edt/#comment-56748</link> <dc:creator>Ken</dc:creator> <pubDate>Wed, 14 Sep 2011 20:00:42 +0000</pubDate> <guid
isPermaLink="false">http://undocumentedmatlab.com/?p=1198#comment-56748</guid> <description>Thanks Yair.This example is still confusing to me, and I will have to study it more.  My main concern is that in this type of situation, if the button1.setText() call was replaced by some other call that may depend on the state of an object that may have changed by button1.doClick().  Then, I believe I would need a drawnow() after button1.doClick() for things to occur in the correct order.  With my limited understanding of how matlab interacts with the EDT thread, I almost feel as if I need many drawnow() calls in my matlab/swing gui.The side-effect with dir is interesting.  Also interesting is the case where we put a dir() command between the button1.doClick() and the button1.setText() calls.  To me, it seems as if the button1.setText() call is always occurring on the main thread.</description> <content:encoded><![CDATA[<p>Thanks Yair.</p><p>This example is still confusing to me, and I will have to study it more.  My main concern is that in this type of situation, if the button1.setText() call was replaced by some other call that may depend on the state of an object that may have changed by button1.doClick().  Then, I believe I would need a drawnow() after button1.doClick() for things to occur in the correct order.  With my limited understanding of how matlab interacts with the EDT thread, I almost feel as if I need many drawnow() calls in my matlab/swing gui.</p><p>The side-effect with dir is interesting.  Also interesting is the case where we put a dir() command between the button1.doClick() and the button1.setText() calls.  To me, it seems as if the button1.setText() call is always occurring on the main thread.</p> ]]></content:encoded> </item> <item><title>By: Yair Altman</title><link>http://undocumentedmatlab.com/blog/matlab-and-the-event-dispatch-thread-edt/#comment-56744</link> <dc:creator>Yair Altman</dc:creator> <pubDate>Wed, 14 Sep 2011 18:46:47 +0000</pubDate> <guid
isPermaLink="false">http://undocumentedmatlab.com/?p=1198#comment-56744</guid> <description>@Ken - I believe, without being 100% certain, that since the callbacks run the svd(rand(1000, 1000)) function, which require Matlab&#039;s Main Thread (MT) to compute, then at that point CPU control on the EDT passes onward to the next available task (button1.setText), which luckily does not require MT and therefore fully executes immediately.An interesting side-effect can be seen in the Command Window, if immediately after submitting edtTest() you issue any command that requires MT (e.g., another computation or even a simple &lt;b&gt;&lt;i&gt;dir&lt;/i&gt;&lt;/b&gt;) - this will be blocked until button1Callback ends, and before button2Callback starts. As far as I understand, this is because button2Callback is scheduled on the EDT (by button1Callback&#039;s doClick() request) and is therefore executed after the Command Window command.Or maybe I&#039;m just mixing things up...</description> <content:encoded><![CDATA[<p>@Ken &#8211; I believe, without being 100% certain, that since the callbacks run the svd(rand(1000, 1000)) function, which require Matlab&#8217;s Main Thread (MT) to compute, then at that point CPU control on the EDT passes onward to the next available task (button1.setText), which luckily does not require MT and therefore fully executes immediately.</p><p>An interesting side-effect can be seen in the Command Window, if immediately after submitting edtTest() you issue any command that requires MT (e.g., another computation or even a simple <b><i>dir</i></b>) &#8211; this will be blocked until button1Callback ends, and before button2Callback starts. As far as I understand, this is because button2Callback is scheduled on the EDT (by button1Callback&#8217;s doClick() request) and is therefore executed after the Command Window command.</p><p>Or maybe I&#8217;m just mixing things up&#8230;</p> ]]></content:encoded> </item> <item><title>By: Ken</title><link>http://undocumentedmatlab.com/blog/matlab-and-the-event-dispatch-thread-edt/#comment-56736</link> <dc:creator>Ken</dc:creator> <pubDate>Wed, 14 Sep 2011 17:21:13 +0000</pubDate> <guid
isPermaLink="false">http://undocumentedmatlab.com/?p=1198#comment-56736</guid> <description>Hi Yair,Thank you for your many helpful posts everywhere.I am still a bit confused as to how this is supposed to work.  In the following small example, I would have expected that all methods invoked on button1 get run on the EDT.  This to me means that the setText() call would be queued up and run after button1&#039;s callback has finished.  However, this is not the case.In other words, I would have expected the text &#039;Button 1 text: New Button 1&#039; (or perhaps, &#039;Button 1 text: Button 1&#039;) to be the last thing displayed.Can you provide me with more insight?  Thanks!!Sorry for the ill-formatted code.  I cannot seem to get the code fragment tags to work.&lt;pre lang=&quot;matlab&quot;&gt;
function edtTest()% Create buttons
button1 = javaObjectEDT(&#039;javax.swing.JButton&#039;, &#039;Button 1&#039;);
button2 = javaObjectEDT(&#039;javax.swing.JButton&#039;, &#039;Button 2&#039;);% Assign callbacks
set(handle(button1, &#039;CallbackProperties&#039;), &#039;ActionPerformedCallback&#039;, {@button1Callback, button2});
set(handle(button2, &#039;CallbackProperties&#039;), &#039;ActionPerformedCallback&#039;, @button2Callback);% Do stuff
button1.doClick();
button1.setText(&#039;New Button 1&#039;);
fprintf(&#039;Button 1 text: %s\n&#039;, char(button1.getText()));
fprintf(&#039;edtTest finished.\n&#039;);
% Callback for button1
function button1Callback(~, ~, button2)
for k = 1 : 10
svd(rand(1000, 1000));
end
button2.doClick();
fprintf(&#039;Button 1 callback finished\n&#039;);
% Callback for button2
function button2Callback(~, ~)
for k = 1 : 10
svd(rand(1000, 1000));
end
fprintf(&#039;Button 2 callback finished\n&#039;);
&lt;/pre&gt;</description> <content:encoded><![CDATA[<p>Hi Yair,</p><p>Thank you for your many helpful posts everywhere.</p><p>I am still a bit confused as to how this is supposed to work.  In the following small example, I would have expected that all methods invoked on button1 get run on the EDT.  This to me means that the setText() call would be queued up and run after button1&#8242;s callback has finished.  However, this is not the case.</p><p>In other words, I would have expected the text &#8216;Button 1 text: New Button 1&#8242; (or perhaps, &#8216;Button 1 text: Button 1&#8242;) to be the last thing displayed.</p><p>Can you provide me with more insight?  Thanks!!</p><p>Sorry for the ill-formatted code.  I cannot seem to get the code fragment tags to work.</p><div
class="wp_syntax"><div
class="code"><pre class="matlab" style="font-family:monospace;"><span style="color: #0000FF;">function</span> edtTest<span style="color: #080;">&#40;</span><span style="color: #080;">&#41;</span>
&nbsp;
    <span style="color: #228B22;">% Create buttons</span>
    button1 = javaObjectEDT<span style="color: #080;">&#40;</span><span style="color:#A020F0;">'javax.swing.JButton'</span>, <span style="color:#A020F0;">'Button 1'</span><span style="color: #080;">&#41;</span>;
    button2 = javaObjectEDT<span style="color: #080;">&#40;</span><span style="color:#A020F0;">'javax.swing.JButton'</span>, <span style="color:#A020F0;">'Button 2'</span><span style="color: #080;">&#41;</span>;
&nbsp;
    <span style="color: #228B22;">% Assign callbacks</span>
    <span style="color: #0000FF;">set</span><span style="color: #080;">&#40;</span>handle<span style="color: #080;">&#40;</span>button1, <span style="color:#A020F0;">'CallbackProperties'</span><span style="color: #080;">&#41;</span>, <span style="color:#A020F0;">'ActionPerformedCallback'</span>, <span style="color: #080;">&#123;</span>@button1Callback, button2<span style="color: #080;">&#125;</span><span style="color: #080;">&#41;</span>;
    <span style="color: #0000FF;">set</span><span style="color: #080;">&#40;</span>handle<span style="color: #080;">&#40;</span>button2, <span style="color:#A020F0;">'CallbackProperties'</span><span style="color: #080;">&#41;</span>, <span style="color:#A020F0;">'ActionPerformedCallback'</span>, @button2Callback<span style="color: #080;">&#41;</span>;
&nbsp;
    <span style="color: #228B22;">% Do stuff</span>
    button1.<span style="">doClick</span><span style="color: #080;">&#40;</span><span style="color: #080;">&#41;</span>;
    button1.<span style="">setText</span><span style="color: #080;">&#40;</span><span style="color:#A020F0;">'New Button 1'</span><span style="color: #080;">&#41;</span>;
    <span style="color: #0000FF;">fprintf</span><span style="color: #080;">&#40;</span><span style="color:#A020F0;">'Button 1 text: %s\n'</span>, <span style="color: #0000FF;">char</span><span style="color: #080;">&#40;</span>button1.<span style="">getText</span><span style="color: #080;">&#40;</span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>;
    <span style="color: #0000FF;">fprintf</span><span style="color: #080;">&#40;</span><span style="color:#A020F0;">'edtTest finished.\n'</span><span style="color: #080;">&#41;</span>;
&nbsp;
<span style="color: #228B22;">% Callback for button1</span>
<span style="color: #0000FF;">function</span> button1Callback<span style="color: #080;">&#40;</span>~, ~, button2<span style="color: #080;">&#41;</span>
    <span style="color: #0000FF;">for</span> k = <span style="color: #33f;">1</span> <span style="color: #F0F;">:</span> <span style="color: #33f;">10</span>
        <span style="color: #0000FF;">svd</span><span style="color: #080;">&#40;</span><span style="color: #0000FF;">rand</span><span style="color: #080;">&#40;</span><span style="color: #33f;">1000</span>, <span style="color: #33f;">1000</span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>;
    <span style="color: #0000FF;">end</span>
    button2.<span style="">doClick</span><span style="color: #080;">&#40;</span><span style="color: #080;">&#41;</span>;
    <span style="color: #0000FF;">fprintf</span><span style="color: #080;">&#40;</span><span style="color:#A020F0;">'Button 1 callback finished\n'</span><span style="color: #080;">&#41;</span>;
&nbsp;
<span style="color: #228B22;">% Callback for button2</span>
<span style="color: #0000FF;">function</span> button2Callback<span style="color: #080;">&#40;</span>~, ~<span style="color: #080;">&#41;</span>
    <span style="color: #0000FF;">for</span> k = <span style="color: #33f;">1</span> <span style="color: #F0F;">:</span> <span style="color: #33f;">10</span>
        <span style="color: #0000FF;">svd</span><span style="color: #080;">&#40;</span><span style="color: #0000FF;">rand</span><span style="color: #080;">&#40;</span><span style="color: #33f;">1000</span>, <span style="color: #33f;">1000</span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>;
    <span style="color: #0000FF;">end</span>
    <span style="color: #0000FF;">fprintf</span><span style="color: #080;">&#40;</span><span style="color:#A020F0;">'Button 2 callback finished\n'</span><span style="color: #080;">&#41;</span>;</pre></div></div>]]></content:encoded> </item> <item><title>By: Arda</title><link>http://undocumentedmatlab.com/blog/matlab-and-the-event-dispatch-thread-edt/#comment-56291</link> <dc:creator>Arda</dc:creator> <pubDate>Thu, 08 Sep 2011 18:53:40 +0000</pubDate> <guid
isPermaLink="false">http://undocumentedmatlab.com/?p=1198#comment-56291</guid> <description>Yair hi,
Isn&#039;t this supposed to work for modal dialogs? When a java Dialog class is created without javaObjectEDT, it runs on main thread automatically as your examples suggest (by the way what is dangerous about it, i couldnt catch?). So that when type is modal it stops in main thread and waits. However it shouldnt do that if methods are dispatched from EDT. Well, it does stop.
Simple example;&lt;pre lang=&quot;matlab&quot;&gt;
frame=javax.swing.JFrame(&#039;&#039;);
javaObjectEDT(frame);
dlg=java.awt.Dialog(frame,true);
javaObjectEDT(dlg);
pbar=javax.swing.JProgressBar;
javaObjectEDT(pbar);
pbar.setIndeterminate(true);
dlg.add(pbar);
dlg.pack;
set(handle(dlg,&#039;CallbackProperties&#039;),&#039;KeyPressedCallback&#039;,...
&#039;dlg.hide;frame.dispose;&#039;); %incase closing doesnt work
dlg.show;
disp(&#039;This should have been read immediately!&#039;)
&lt;/pre&gt;</description> <content:encoded><![CDATA[<p>Yair hi,<br
/> Isn&#8217;t this supposed to work for modal dialogs? When a java Dialog class is created without javaObjectEDT, it runs on main thread automatically as your examples suggest (by the way what is dangerous about it, i couldnt catch?). So that when type is modal it stops in main thread and waits. However it shouldnt do that if methods are dispatched from EDT. Well, it does stop.<br
/> Simple example;</p><div
class="wp_syntax"><div
class="code"><pre class="matlab" style="font-family:monospace;">frame=javax.<span style="">swing</span>.<span style="">JFrame</span><span style="color: #080;">&#40;</span><span style="color:#A020F0;">''</span><span style="color: #080;">&#41;</span>;
javaObjectEDT<span style="color: #080;">&#40;</span>frame<span style="color: #080;">&#41;</span>;
dlg=java.<span style="">awt</span>.<span style="color: #0000FF;">Dialog</span><span style="color: #080;">&#40;</span>frame,<span style="color: #0000FF;">true</span><span style="color: #080;">&#41;</span>;
javaObjectEDT<span style="color: #080;">&#40;</span>dlg<span style="color: #080;">&#41;</span>;
pbar=javax.<span style="">swing</span>.<span style="">JProgressBar</span>;
javaObjectEDT<span style="color: #080;">&#40;</span>pbar<span style="color: #080;">&#41;</span>;
pbar.<span style="">setIndeterminate</span><span style="color: #080;">&#40;</span><span style="color: #0000FF;">true</span><span style="color: #080;">&#41;</span>;
dlg.<span style="">add</span><span style="color: #080;">&#40;</span>pbar<span style="color: #080;">&#41;</span>;
dlg.<span style="color: #0000FF;">pack</span>;
<span style="color: #0000FF;">set</span><span style="color: #080;">&#40;</span>handle<span style="color: #080;">&#40;</span>dlg,<span style="color:#A020F0;">'CallbackProperties'</span><span style="color: #080;">&#41;</span>,<span style="color:#A020F0;">'KeyPressedCallback'</span>,<span style="color: #F0F;">...</span>
    <span style="color:#A020F0;">'dlg.hide;frame.dispose;'</span><span style="color: #080;">&#41;</span>; <span style="color: #228B22;">%incase closing doesnt work</span>
dlg.<span style="">show</span>;
<span style="color: #0000FF;">disp</span><span style="color: #080;">&#40;</span><span style="color:#A020F0;">'This should have been read immediately!'</span><span style="color: #080;">&#41;</span></pre></div></div>]]></content:encoded> </item> <item><title>By: Yair Altman</title><link>http://undocumentedmatlab.com/blog/matlab-and-the-event-dispatch-thread-edt/#comment-38115</link> <dc:creator>Yair Altman</dc:creator> <pubDate>Mon, 28 Mar 2011 16:56:48 +0000</pubDate> <guid
isPermaLink="false">http://undocumentedmatlab.com/?p=1198#comment-38115</guid> <description>Thanks Jan :-)
Welcome onboard!</description> <content:encoded><![CDATA[<p>Thanks Jan <img
src='http://undocumentedmatlab.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /><br
/> Welcome onboard!</p> ]]></content:encoded> </item> <item><title>By: Jan Simon</title><link>http://undocumentedmatlab.com/blog/matlab-and-the-event-dispatch-thread-edt/#comment-38092</link> <dc:creator>Jan Simon</dc:creator> <pubDate>Mon, 28 Mar 2011 11:00:30 +0000</pubDate> <guid
isPermaLink="false">http://undocumentedmatlab.com/?p=1198#comment-38092</guid> <description>The check of the Matlab major and minor version with less than 2 STR2DOUBLE, 2 REGEXPREP, 2 VERSION commands:
&lt;pre lang=&quot;matlab&quot;&gt;
V = sscanf(version, &#039;%d.&#039;, 2);
if V(1) &gt;=7 &amp;&amp; V(2) &gt;=6, ...
&lt;/pre&gt;
This is a fast Mex, which can consider all 4 version numbers from VERSION: http://www.mathworks.com/matlabcentral/fileexchange/27231-ismatlabverKind regards, Jan</description> <content:encoded><![CDATA[<p>The check of the Matlab major and minor version with less than 2 STR2DOUBLE, 2 REGEXPREP, 2 VERSION commands:</p><div
class="wp_syntax"><div
class="code"><pre class="matlab" style="font-family:monospace;">V = <span style="color: #0000FF;">sscanf</span><span style="color: #080;">&#40;</span><span style="color: #0000FF;">version</span>, <span style="color:#A020F0;">'%d.'</span>, <span style="color: #33f;">2</span><span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">if</span> V<span style="color: #080;">&#40;</span><span style="color: #33f;">1</span><span style="color: #080;">&#41;</span> &gt;=<span style="color: #33f;">7</span> <span style="color: #F0F;">&amp;&amp;</span> V<span style="color: #080;">&#40;</span><span style="color: #33f;">2</span><span style="color: #080;">&#41;</span> &gt;=<span style="color: #33f;">6</span>, <span style="color: #F0F;">...</span></pre></div></div><p>This is a fast Mex, which can consider all 4 version numbers from VERSION: <a
href="http://www.mathworks.com/matlabcentral/fileexchange/27231-ismatlabver" rel="nofollow">http://www.mathworks.com/matlabcentral/fileexchange/27231-ismatlabver</a></p><p>Kind regards, Jan</p> ]]></content:encoded> </item> <item><title>By: Malcolm Lidierth</title><link>http://undocumentedmatlab.com/blog/matlab-and-the-event-dispatch-thread-edt/#comment-32185</link> <dc:creator>Malcolm Lidierth</dc:creator> <pubDate>Fri, 04 Feb 2011 12:49:55 +0000</pubDate> <guid
isPermaLink="false">http://undocumentedmatlab.com/?p=1198#comment-32185</guid> <description>EDT Issue
From http://java.sun.com/products/jfc/tsc/articles/painting/
&quot;JComponent.repaint() registers an asynchronous repaint request to the component&#039;s RepaintManager, which uses invokeLater() to queue a Runnable to later process the request on the event dispatching thread.&quot;
As paints are always done on the EDT, I am not sure that queuing them from a separate thread could achieve much. As Swing uses Java graphics, the two are not entirely separable.
For JComponents there is always paintImmediately.
To skip successive calls, my isMultipleCall on the FEX may help (http://www.mathworks.cn/matlabcentral/fileexchange/26027-ismultiplecall)</description> <content:encoded><![CDATA[<p>EDT Issue<br
/> From <a
href="http://java.sun.com/products/jfc/tsc/articles/painting/" rel="nofollow">http://java.sun.com/products/jfc/tsc/articles/painting/</a><br
/> &#8220;JComponent.repaint() registers an asynchronous repaint request to the component&#8217;s RepaintManager, which uses invokeLater() to queue a Runnable to later process the request on the event dispatching thread.&#8221;<br
/> As paints are always done on the EDT, I am not sure that queuing them from a separate thread could achieve much. As Swing uses Java graphics, the two are not entirely separable.<br
/> For JComponents there is always paintImmediately.<br
/> To skip successive calls, my isMultipleCall on the FEX may help (<a
href="http://www.mathworks.cn/matlabcentral/fileexchange/26027-ismultiplecall" rel="nofollow">http://www.mathworks.cn/matlabcentral/fileexchange/26027-ismultiplecall</a>)</p> ]]></content:encoded> </item> </channel> </rss>

<!-- W3 Total Cache: Minify debug info:
Engine:             disk: basic
Theme:              b7666
Template:           single
-->
<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Served from: undocumentedmatlab.com @ 2012-05-21 18:55:59 -->

<!-- W3 Total Cache: Page cache debug info:
Engine:             disk: enhanced
Cache key:          blog/matlab-and-the-event-dispatch-thread-edt/feed/_index.xml_gzip
Caching:            enabled
Status:             not cached
Creation Time:      0.837s
Header info:
X-Pingback:         http://undocumentedmatlab.com/blog/xmlrpc.php
Set-Cookie:         wpgb_visit_last_php-default=1337651758; expires=Wed, 22-May-2013 01:55:58 GMT; path=/
Link:               <http://undocumentedmatlab.com/?p=1198>; rel=shortlink
Content-Type:       text/xml; charset=UTF-8
Last-Modified:      Tue, 22 May 2012 01:55:59 GMT
Vary:               Accept-Encoding, Cookie
Expires:            Tue, 22 May 2012 02:55:59 GMT
Pragma:             public
Cache-Control:      public, must-revalidate, proxy-revalidate
Etag:               f4d51aa0388547ed5d0c7f7a30aa012f
Content-Encoding:   gzip
-->
