<?xml version="1.0" encoding="ISO-8859-1"?>

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
	<channel>
		<title>Java Programming Forums - The Java Community - Blogs - Tjstretch</title>
		<link>http://www.javaprogrammingforums.com/blogs/tjstretch/</link>
		<description>The Java Programming Forums are a community of Java programmers from all around the World. Join us now to solve all your Java problems!</description>
		<language>en</language>
		<lastBuildDate>Sat, 25 May 2013 14:46:32 GMT</lastBuildDate>
		<generator>vBulletin</generator>
		<ttl>60</ttl>
		<image>
			<url>http://www.javaprogrammingforums.com/images/misc/rss.jpg</url>
			<title>Java Programming Forums - The Java Community - Blogs - Tjstretch</title>
			<link>http://www.javaprogrammingforums.com/blogs/tjstretch/</link>
		</image>
		<item>
			<title>Thread Volatility</title>
			<link>http://www.javaprogrammingforums.com/blogs/tjstretch/63-thread-volatility.html</link>
			<pubDate>Tue, 13 Mar 2012 17:49:21 GMT</pubDate>
			<description><![CDATA[_Summary_ 
This is put at the top for those who don't want to read the entire thing. 
 
* Threads get more volatile as more are added, up to a point...]]></description>
			<content:encoded><![CDATA[<blockquote class="blogcontent restore"><div style="text-align: center;"><u><font size="5">Summary</font></u></div>This is put at the top for those who don't want to read the entire thing.<br />
<ul><li style="">Threads get more volatile as more are added, up to a point</li><li style="">Thread volatility jumps drammatically on my computer between 4 and 8 threads.</li><li style="">Calling non-volatile variables is very inaccurate</li></ul><br />
<br />
<div style="text-align: center;"><u><font size="5">Overview</font></u></div>I recently posted a forum thread that more Java Threads will increase volatility. While I had seen the side-effect volatility and it seemed intuitive enough, I decided that n order not go give bad advice. I created a SSCEE of the situation that I was trying to express.  The numbers that I crunched are in the comments of the program.<br />
<br />
<div style="text-align: center;"><u><font size="5">Program</font></u></div><div class="bbcode_container">
                
<div class="bbcode_description" style="height:24px; background-image: url('http://www.javaprogrammingforums.com/images/javacode2.png'); background-repeat: no-repeat; margin-bottom:0px"></div>

<div class="bbcode_code" style="height:372px;"><div class="java" style="font-family:monospace;"><pre style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #7F0055; font-weight: bold;">import</span> <span style="color: #006699;">java.util.ArrayList</span><span style="color: #000000;">;</span>
<span style="color: #008000; font-style: italic; font-weight: bold;">/**
 * This SSCEE shows how volatile threads can get, especially without
 * synchronization calls.  On my computer, these are the estimated averages,
 * please note that these are very, very much estimated at a glance.
 * 
 * All numbers are in millions
 * 
 * Threads : Est. Average | range
 *    2    :      12      | 11 - 13
 *    4    :      83      | 74 - 91
 *    8    :     200?     | 106 - 950
 *    16   :     200?     | 101 - 957 Peak volatility
 *    32   :     225?     | 107 - 941
 * @author Timothy Moore
 */</span>
<span style="color: #7F0055; font-weight: bold;">public</span> <span style="color: #7F0055; font-weight: bold;">class</span> ThreadVolatilityCheck <span style="color: #7F0055; font-weight: bold;">extends</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Athread+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">Thread</span></a>
<span style="color: #000000;">&#123;</span>
  <span style="color: #008000; font-style: italic; font-weight: bold;">/**
   * This counter is called by many different threads.
   */</span>
  <span style="color: #7F0055; font-weight: bold;">private</span> <span style="color: #7F0055; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">int</span> counter <span style="color: #000000;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #000000;">;</span>
  <span style="color: #008000; font-style: italic; font-weight: bold;">/**
   * The threads status
   */</span>
  <span style="color: #7F0055; font-weight: bold;">private</span> <span style="color: #7F0055; font-weight: bold;">volatile</span> <span style="color: #000066; font-weight: bold;">boolean</span> running<span style="color: #000000;">;</span>
  <span style="color: #008000; font-style: italic; font-weight: bold;">/**
   * Prepares the thread to be started
   */</span>
  <span style="color: #7F0055; font-weight: bold;">public</span> ThreadVolatilityCheck<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
  <span style="color: #000000;">&#123;</span>
    running <span style="color: #000000;">=</span> <span style="color: #000066; font-weight: bold;">true</span><span style="color: #000000;">;</span>
  <span style="color: #000000;">&#125;</span>
  <span style="color: #008000; font-style: italic; font-weight: bold;">/**
   * UI Thread runs here
   */</span>
  <span style="color: #7F0055; font-weight: bold;">public</span> <span style="color: #7F0055; font-weight: bold;">static</span> <span style="color: #7F0055; font-weight: bold;">void</span> main<span style="color: #000000;">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">String</span></a><span style="color: #000000;">&#91;</span><span style="color: #000000;">&#93;</span> args<span style="color: #000000;">&#41;</span>
  <span style="color: #000000;">&#123;</span>
    <span style="color: #000066; font-weight: bold;">int</span> numThreads <span style="color: #000000;">=</span> <span style="color: #cc66cc;">1</span><span style="color: #000000;">;</span> <span style="color: #3F7F5F; font-style: italic;">//5 threads for first run</span>
    ArrayList<span style="color: #000000;">&lt;</span>ThreadVolatilityCheck<span style="color: #000000;">&gt;</span> threads <span style="color: #000000;">=</span> <span style="color: #7F0055; font-weight: bold;">new</span> ArrayList<span style="color: #000000;">&lt;</span>ThreadVolatilityCheck<span style="color: #000000;">&gt;</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
    <span style="color: #7F0055; font-weight: bold;">for</span><span style="color: #000000;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i <span style="color: #000000;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #000000;">;</span> i <span style="color: #000000;">&lt;</span> <span style="color: #cc66cc;">5</span><span style="color: #000000;">;</span> i<span style="color: #000000;">++</span><span style="color: #000000;">&#41;</span> <span style="color: #3F7F5F; font-style: italic;">//Double the threads every loop</span>
    <span style="color: #000000;">&#123;</span>
      numThreads <span style="color: #000000;">*=</span> <span style="color: #cc66cc;">2</span><span style="color: #000000;">;</span>
      runExample<span style="color: #000000;">&#40;</span>numThreads, threads<span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
      <span style="color: #3F7F5F; font-style: italic;">//Delay a bit in hopes to reduce the lag, as well as run the GC</span>
      clearThreads<span style="color: #000000;">&#40;</span>threads<span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
      <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Asystem+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">System</span></a>.<span style="color: #000000;">out</span>.<span style="color: #000000;">println</span><span style="color: #000000;">&#40;</span><span style="color: #0000ff;">&quot;Done! Running GC and delaying to reduce lag.&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
      <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Asystem+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">System</span></a>.<span style="color: #000000;">gc</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
      <span style="color: #7F0055; font-weight: bold;">try</span>
      <span style="color: #000000;">&#123;</span>
        <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Athread+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">Thread</span></a>.<span style="color: #000000;">sleep</span><span style="color: #000000;">&#40;</span><span style="color: #cc66cc;">1000</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
      <span style="color: #000000;">&#125;</span><span style="color: #7F0055; font-weight: bold;">catch</span><span style="color: #000000;">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Ainterruptedexception+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">InterruptedException</span></a> exc<span style="color: #000000;">&#41;</span>
      <span style="color: #000000;">&#123;</span>
        exc.<span style="color: #000000;">printStackTrace</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
        <span style="color: #7F0055; font-weight: bold;">return</span><span style="color: #000000;">;</span>
      <span style="color: #000000;">&#125;</span>
    <span style="color: #000000;">&#125;</span>
  <span style="color: #000000;">&#125;</span>
  <span style="color: #008000; font-style: italic; font-weight: bold;">/**
   * Run an example, reusing the arraylist.  This runs for 
   * 15 seconds, displaying the counter every second
   * @param num the number of threads
   * @param thrdList the list of threads
   */</span>
  <span style="color: #7F0055; font-weight: bold;">public</span> <span style="color: #7F0055; font-weight: bold;">static</span> <span style="color: #7F0055; font-weight: bold;">void</span> runExample<span style="color: #000000;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> num, ArrayList<span style="color: #000000;">&lt;</span>ThreadVolatilityCheck<span style="color: #000000;">&gt;</span> thrdList<span style="color: #000000;">&#41;</span>
  <span style="color: #000000;">&#123;</span>
    <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Asystem+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">System</span></a>.<span style="color: #000000;">out</span>.<span style="color: #000000;">println</span><span style="color: #000000;">&#40;</span><span style="color: #0000ff;">&quot;Running an example that has &quot;</span><span style="color: #000000;">+</span>num<span style="color: #000000;">+</span><span style="color: #0000ff;">&quot; threads!&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
    <span style="color: #7F0055; font-weight: bold;">for</span><span style="color: #000000;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i <span style="color: #000000;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #000000;">;</span> i <span style="color: #000000;">&lt;</span> num<span style="color: #000000;">;</span> i<span style="color: #000000;">++</span><span style="color: #000000;">&#41;</span>
    <span style="color: #000000;">&#123;</span>
      thrdList.<span style="color: #000000;">add</span><span style="color: #000000;">&#40;</span><span style="color: #7F0055; font-weight: bold;">new</span> ThreadVolatilityCheck<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
      thrdList.<span style="color: #000000;">get</span><span style="color: #000000;">&#40;</span>i<span style="color: #000000;">&#41;</span>.<span style="color: #000000;">start</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
    <span style="color: #000000;">&#125;</span>
    <span style="color: #3F7F5F; font-style: italic;">//Clear it several times to make sure</span>
&nbsp;
    <span style="color: #7F0055; font-weight: bold;">for</span><span style="color: #000000;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i <span style="color: #000000;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #000000;">;</span> i <span style="color: #000000;">&lt;</span> <span style="color: #cc66cc;">15</span><span style="color: #000000;">;</span> i<span style="color: #000000;">++</span><span style="color: #000000;">&#41;</span>
    <span style="color: #000000;">&#123;</span>
      <span style="color: #7F0055; font-weight: bold;">try</span>
      <span style="color: #000000;">&#123;</span>
        <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Athread+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">Thread</span></a>.<span style="color: #000000;">sleep</span><span style="color: #000000;">&#40;</span><span style="color: #cc66cc;">1000</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
      <span style="color: #000000;">&#125;</span><span style="color: #7F0055; font-weight: bold;">catch</span><span style="color: #000000;">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Ainterruptedexception+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">InterruptedException</span></a> exc<span style="color: #000000;">&#41;</span>
      <span style="color: #000000;">&#123;</span>
        exc.<span style="color: #000000;">printStackTrace</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
        <span style="color: #7F0055; font-weight: bold;">return</span><span style="color: #000000;">;</span>
      <span style="color: #000000;">&#125;</span>
      <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Asystem+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">System</span></a>.<span style="color: #000000;">out</span>.<span style="color: #000000;">println</span><span style="color: #000000;">&#40;</span><span style="color: #0000ff;">&quot;In loop &quot;</span><span style="color: #000000;">+</span><span style="color: #000000;">&#40;</span>i<span style="color: #000000;">+</span><span style="color: #cc66cc;">1</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">+</span><span style="color: #0000ff;">&quot;, counter was incremented &quot;</span><span style="color: #000000;">+</span>counter<span style="color: #000000;">+</span><span style="color: #0000ff;">&quot; times.&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
      <span style="color: #7F0055; font-weight: bold;">for</span><span style="color: #000000;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i2 <span style="color: #000000;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #000000;">;</span> i2 <span style="color: #000000;">&lt;</span> <span style="color: #cc66cc;">5</span><span style="color: #000000;">;</span> i2<span style="color: #000000;">++</span><span style="color: #000000;">&#41;</span> <span style="color: #3F7F5F; font-style: italic;">//Hard to clear with the threads going on so fast</span>
      <span style="color: #000000;">&#123;</span>
        counter <span style="color: #000000;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #000000;">;</span>
        <span style="color: #7F0055; font-weight: bold;">try</span>
        <span style="color: #000000;">&#123;</span>
          <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Athread+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">Thread</span></a>.<span style="color: #000000;">sleep</span><span style="color: #000000;">&#40;</span><span style="color: #cc66cc;">10</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
        <span style="color: #000000;">&#125;</span><span style="color: #7F0055; font-weight: bold;">catch</span><span style="color: #000000;">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Ainterruptedexception+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">InterruptedException</span></a> exc<span style="color: #000000;">&#41;</span>
        <span style="color: #000000;">&#123;</span>
          exc.<span style="color: #000000;">printStackTrace</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
          <span style="color: #7F0055; font-weight: bold;">return</span><span style="color: #000000;">;</span>
        <span style="color: #000000;">&#125;</span>
      <span style="color: #000000;">&#125;</span>
    <span style="color: #000000;">&#125;</span>
  <span style="color: #000000;">&#125;</span>
  <span style="color: #008000; font-style: italic; font-weight: bold;">/**
   * Stops each thread, and then clears the list.
   * 
   * @param thrdList the thread list
   */</span>
  <span style="color: #7F0055; font-weight: bold;">public</span> <span style="color: #7F0055; font-weight: bold;">static</span> <span style="color: #7F0055; font-weight: bold;">void</span> clearThreads<span style="color: #000000;">&#40;</span>ArrayList<span style="color: #000000;">&lt;</span>ThreadVolatilityCheck<span style="color: #000000;">&gt;</span> thrdList<span style="color: #000000;">&#41;</span>
  <span style="color: #000000;">&#123;</span>
    <span style="color: #7F0055; font-weight: bold;">if</span><span style="color: #000000;">&#40;</span>thrdList.<span style="color: #000000;">size</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&gt;</span> <span style="color: #cc66cc;">0</span><span style="color: #000000;">&#41;</span>
    <span style="color: #000000;">&#123;</span>
      <span style="color: #3F7F5F; font-style: italic;">//Clear the list</span>
      <span style="color: #7F0055; font-weight: bold;">for</span><span style="color: #000000;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i <span style="color: #000000;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #000000;">;</span> i <span style="color: #000000;">&lt;</span> thrdList.<span style="color: #000000;">size</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span> i<span style="color: #000000;">++</span><span style="color: #000000;">&#41;</span>
      <span style="color: #000000;">&#123;</span>
        thrdList.<span style="color: #000000;">get</span><span style="color: #000000;">&#40;</span>i<span style="color: #000000;">&#41;</span>.<span style="color: #000000;">running</span> <span style="color: #000000;">=</span> <span style="color: #000066; font-weight: bold;">false</span><span style="color: #000000;">;</span>
      <span style="color: #000000;">&#125;</span>
      thrdList.<span style="color: #000000;">clear</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
    <span style="color: #000000;">&#125;</span>
  <span style="color: #000000;">&#125;</span>
  @Override
  <span style="color: #7F0055; font-weight: bold;">public</span> <span style="color: #7F0055; font-weight: bold;">void</span> run<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
  <span style="color: #000000;">&#123;</span>
    <span style="color: #7F0055; font-weight: bold;">while</span><span style="color: #000000;">&#40;</span>running<span style="color: #000000;">&#41;</span>
    <span style="color: #000000;">&#123;</span>
      counter<span style="color: #000000;">++;</span>
      <span style="color: #666666; font-style: italic;">/*try
      {
        Thread.sleep(5);  //Use this only if you have to.  This will make results much less clear, but
      }catch(InterruptedException exc) //will remove the lag your computer might get
      {
        exc.printStackTrace();
        return;
      }*/</span>
    <span style="color: #000000;">&#125;</span>
  <span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span></pre></div></div>

</div> Java web start:<br />
<a href="https://doc-10-78-docs.googleusercontent.com/docs/securesc/cneu7cv6kv1665i31lv4gesqc5k78upk/tlbmpjfb3k074nsculgdsu9vf3d4rttq/1331661600000/05085357379208636347/05085357379208636347/0By7ygcQvS52ld2FGc2tTSTBUQ3Fxc0s0UUNwVzBWQQ?e=download&amp;nonce=ldis9tr32j672&amp;user=05085357379208636347&amp;hash=4bsq9o113ilq9tooem992guonobuej9c" target="_blank">Download</a><br />
<div style="text-align: center;"><u><font size="5">Example Console Log</font></u></div><div class="bbcode_container">
                
<div class="bbcode_description" style="height:24px; background-image: url('http://www.javaprogrammingforums.com/images/javacode2.png'); background-repeat: no-repeat; margin-bottom:0px"></div>

<div class="bbcode_code" style="height:372px;"><div class="" style="font-family:monospace;"><pre style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">Running an example that has 2 threads!
In loop 1, counter was incremented 118277530 times.
In loop 2, counter was incremented 240736625 times.
In loop 3, counter was incremented 120427092 times.
In loop 4, counter was incremented 240909394 times.
In loop 5, counter was incremented 119488030 times.
In loop 6, counter was incremented 121686245 times.
In loop 7, counter was incremented 248381632 times.
In loop 8, counter was incremented 116726346 times.
In loop 9, counter was incremented 120301259 times.
Running an example that has 2 threads!
In loop 1, counter was incremented 115030522 times.
In loop 2, counter was incremented 119786184 times.
In loop 3, counter was incremented 116040019 times.
In loop 4, counter was incremented 116059952 times.
In loop 5, counter was incremented 118205698 times.
In loop 6, counter was incremented 117622991 times.
In loop 7, counter was incremented 121463368 times.
In loop 8, counter was incremented 124049904 times.
In loop 9, counter was incremented 135277324 times.
In loop 10, counter was incremented 127150703 times.
In loop 11, counter was incremented 123867924 times.
In loop 12, counter was incremented 126675289 times.
In loop 13, counter was incremented 119651963 times.
In loop 14, counter was incremented 116634252 times.
In loop 15, counter was incremented 124676975 times.
Done! Running GC and delaying to reduce lag.
Running an example that has 4 threads!
In loop 1, counter was incremented 80441306 times.
In loop 2, counter was incremented 79333766 times.
In loop 3, counter was incremented 90902937 times.
In loop 4, counter was incremented 78883683 times.
In loop 5, counter was incremented 80974920 times.
In loop 6, counter was incremented 74613978 times.
In loop 7, counter was incremented 86349188 times.
In loop 8, counter was incremented 79928735 times.
In loop 9, counter was incremented 91211886 times.
In loop 10, counter was incremented 76407633 times.
In loop 11, counter was incremented 79752390 times.
In loop 12, counter was incremented 80749137 times.
In loop 13, counter was incremented 82692819 times.
In loop 14, counter was incremented 82302890 times.
In loop 15, counter was incremented 80635122 times.
Done! Running GC and delaying to reduce lag.
Running an example that has 8 threads!
In loop 1, counter was incremented 94999368 times.
In loop 2, counter was incremented 89438695 times.
In loop 3, counter was incremented 104784768 times.
In loop 4, counter was incremented 111052720 times.
In loop 5, counter was incremented 83219078 times.
In loop 6, counter was incremented 71943210 times.
In loop 7, counter was incremented 106010822 times.
In loop 8, counter was incremented 96757333 times.
In loop 9, counter was incremented 120123371 times.
In loop 10, counter was incremented 89143556 times.
In loop 11, counter was incremented 182450852 times.
In loop 12, counter was incremented 86592873 times.
In loop 13, counter was incremented 97944935 times.
In loop 14, counter was incremented 79801599 times.
In loop 15, counter was incremented 99167349 times.
Done! Running GC and delaying to reduce lag.
Running an example that has 16 threads!
In loop 1, counter was incremented 94321197 times.
In loop 2, counter was incremented 95704767 times.
In loop 3, counter was incremented 261301721 times.
In loop 4, counter was incremented 90415565 times.
In loop 5, counter was incremented 90370814 times.
In loop 6, counter was incremented 116607901 times.
In loop 7, counter was incremented 114454520 times.
In loop 8, counter was incremented 156387594 times.
In loop 9, counter was incremented 103858756 times.
In loop 10, counter was incremented 92475147 times.
In loop 11, counter was incremented 101842490 times.
In loop 12, counter was incremented 124823121 times.
In loop 13, counter was incremented 125901171 times.
In loop 14, counter was incremented 122276894 times.
In loop 15, counter was incremented 85608739 times.
Done! Running GC and delaying to reduce lag.
Running an example that has 32 threads!
In loop 1, counter was incremented 94154800 times.
In loop 2, counter was incremented 107724767 times.
In loop 3, counter was incremented 131514220 times.
In loop 4, counter was incremented 80345155 times.
In loop 5, counter was incremented 192092932 times.
In loop 6, counter was incremented 123248945 times.
In loop 7, counter was incremented 122500074 times.
In loop 8, counter was incremented 157550605 times.
In loop 9, counter was incremented 79583480 times.
In loop 10, counter was incremented 110221493 times.
In loop 11, counter was incremented 133837107 times.
In loop 12, counter was incremented 125375768 times.
In loop 13, counter was incremented 124613638 times.
In loop 14, counter was incremented 126575643 times.
In loop 15, counter was incremented 87293589 times.
Done! Running GC and delaying to reduce lag.</pre></div></div>

</div> <br />
<b>Warning</b><br />
If you run the program, it will sky-rocket your CPU into oblivion</blockquote>

]]></content:encoded>
			<dc:creator>Tjstretch</dc:creator>
			<guid isPermaLink="true">http://www.javaprogrammingforums.com/blogs/tjstretch/63-thread-volatility.html</guid>
		</item>
		<item>
			<title>Windows 7 Console</title>
			<link>http://www.javaprogrammingforums.com/blogs/tjstretch/33-windows-7-console.html</link>
			<pubDate>Wed, 25 Jan 2012 21:31:14 GMT</pubDate>
			<description>Well I encountered a problem recently that a lot of people were complaining about when I Googled, which is a lot of the time I like to share some...</description>
			<content:encoded><![CDATA[<blockquote class="blogcontent restore">Well I encountered a problem recently that a lot of people were complaining about when I Googled, which is a lot of the time I like to share some basic console programs with only have functional java installed, and on windows 7 the command I used to use to open command prompt [Runnable.getRunnable().exec(&quot;exec /k run.bat&quot;)] no longer works due to security precautions.  So I made a simple class that creates the functional equivalent of console for programs.  Possibly the size of the console might need to be tweaked for each program, but that's not tricky.  I've only tested this on one program, and here is what I did to convert the program completely out of System.out.<br />
<br />
An image:<br />
<br />
<a href="http://www.javaprogrammingforums.com/attachment.php?attachmentid=1000&amp;d=1327690208" id="attachment1000" rel="Lightbox_33" ><img src="http://www.javaprogrammingforums.com/attachment.php?attachmentid=1000&amp;d=1327690208&amp;thumb=1" border="0" alt="Click image for larger version.&nbsp;

Name:	consoleGui1.jpg&nbsp;
Views:	3&nbsp;
Size:	9.7 KB&nbsp;
ID:	1000" class="thumbnail" style="float:CONFIG" /></a><br />
<br />
Put the ConsoleGUI inside the package of your class(es) and, if necessary, set it's package.<br />
<br />
First - make a private static global variable of type ConsoleGUI.TAScanner and call it whatever your old Scanner was called<br />
<div class="bbcode_container">
                
<div class="bbcode_description" style="height:24px; background-image: url('http://www.javaprogrammingforums.com/images/javacode2.png'); background-repeat: no-repeat; margin-bottom:0px"></div>

<div class="bbcode_code" style="height:36px;"><div class="java" style="font-family:monospace;"><pre style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #7F0055; font-weight: bold;">private</span> <span style="color: #7F0055; font-weight: bold;">static</span> ConsoleGUI.<span style="color: #000000;">TAScanner</span> scanner</pre></div></div>

</div> Second - Make another variable of ConsoleGUI.TAPrintStream.  This is your new output stream. (Can't currently use printf)<br />
<div class="bbcode_container">
                
<div class="bbcode_description" style="height:24px; background-image: url('http://www.javaprogrammingforums.com/images/javacode2.png'); background-repeat: no-repeat; margin-bottom:0px"></div>

<div class="bbcode_code" style="height:36px;"><div class="java" style="font-family:monospace;"><pre style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #7F0055; font-weight: bold;">private</span> <span style="color: #7F0055; font-weight: bold;">static</span> ConsoleGUI.<span style="color: #000000;">TAPrintStream</span> out</pre></div></div>

</div> Third - Using your IDE replace all calls to System.out( with out(<br />
Fourth - Remove your old Scanner.<br />
<br />
Fifth - In your main method add these lines (Unless you used different variable names)<br />
<div class="bbcode_container">
                
<div class="bbcode_description" style="height:24px; background-image: url('http://www.javaprogrammingforums.com/images/javacode2.png'); background-repeat: no-repeat; margin-bottom:0px"></div>

<div class="bbcode_code" style="height:60px;"><div class="java" style="font-family:monospace;"><pre style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">ConsoleGUI.<span style="color: #000000;">toGUI</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
scanner <span style="color: #000000;">=</span> ConsoleGUI.<span style="color: #000000;">getScanner</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
out <span style="color: #000000;">=</span> ConsoleGUI.<span style="color: #000000;">getStream</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span></pre></div></div>

</div> Recompile, and your done!<br />
<br />
The class<br />
<div class="bbcode_container">
                
<div class="bbcode_description" style="height:24px; background-image: url('http://www.javaprogrammingforums.com/images/javacode2.png'); background-repeat: no-repeat; margin-bottom:0px"></div>

<div class="bbcode_code" style="height:372px;"><div class="java" style="font-family:monospace;"><pre style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #7F0055; font-weight: bold;">package</span> <span style="color: #006699;">me.timothy.consolegui</span><span style="color: #000000;">;</span>
&nbsp;
<span style="color: #7F0055; font-weight: bold;">import</span> <span style="color: #006699;">java.util.Scanner</span><span style="color: #000000;">;</span>
<span style="color: #7F0055; font-weight: bold;">import</span> <span style="color: #006699;">javax.swing.*</span><span style="color: #000000;">;</span>
<span style="color: #7F0055; font-weight: bold;">import</span> <span style="color: #006699;">java.awt.BorderLayout</span><span style="color: #000000;">;</span>
<span style="color: #7F0055; font-weight: bold;">import</span> <span style="color: #006699;">java.awt.event.ActionListener</span><span style="color: #000000;">;</span>
<span style="color: #7F0055; font-weight: bold;">import</span> <span style="color: #006699;">java.awt.event.ActionEvent</span><span style="color: #000000;">;</span>
<span style="color: #7F0055; font-weight: bold;">import</span> <span style="color: #006699;">java.io.PrintStream</span><span style="color: #000000;">;</span>
<span style="color: #7F0055; font-weight: bold;">import</span> <span style="color: #006699;">java.io.BufferedWriter</span><span style="color: #000000;">;</span>
<span style="color: #7F0055; font-weight: bold;">import</span> <span style="color: #006699;">java.io.FileWriter</span><span style="color: #000000;">;</span>
<span style="color: #7F0055; font-weight: bold;">import</span> <span style="color: #006699;">java.io.File</span><span style="color: #000000;">;</span>
<span style="color: #7F0055; font-weight: bold;">import</span> <span style="color: #006699;">java.io.IOException</span><span style="color: #000000;">;</span>
<span style="color: #7F0055; font-weight: bold;">import</span> <span style="color: #006699;">java.util.InputMismatchException</span><span style="color: #000000;">;</span>
<span style="color: #7F0055; font-weight: bold;">import</span> <span style="color: #006699;">javax.swing.text.DefaultCaret</span><span style="color: #000000;">;</span>
&nbsp;
<span style="color: #008000; font-style: italic; font-weight: bold;">/**
 * Turns a console program into a basic GUI program, useful
 * for Window 7 programs that are unable to open command
 * prompt with a .jar  All a class has to do in order to use 
 * this program is call the static method toGUI(), a special Scanner is
 * acquirable instead of System.in
 * (Attrievable by a call to getScanner(), which is static)
 * By a call to saveSaveText(true),  it will save the calls to out and scanner,
 * however it does not throw any exceptions and may cause lag if
 * there are a lot of System.out calls.
 * 
 * @author Timothy Moore
 */</span>
<span style="color: #7F0055; font-weight: bold;">public</span> <span style="color: #7F0055; font-weight: bold;">class</span> ConsoleGUI <span style="color: #7F0055; font-weight: bold;">extends</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Ajframe+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">JFrame</span></a>
<span style="color: #000000;">&#123;</span>
  <span style="color: #7F0055; font-weight: bold;">private</span> <span style="color: #7F0055; font-weight: bold;">static</span> <span style="color: #7F0055; font-weight: bold;">volatile</span> <span style="color: #000066; font-weight: bold;">boolean</span> saveRun <span style="color: #000000;">=</span> <span style="color: #000066; font-weight: bold;">false</span><span style="color: #000000;">;</span>
  <span style="color: #008000; font-style: italic; font-weight: bold;">/**
   * The ConsoleGUI
   */</span>
  <span style="color: #7F0055; font-weight: bold;">private</span> <span style="color: #7F0055; font-weight: bold;">static</span> ConsoleGUI gui<span style="color: #000000;">;</span>
  <span style="color: #008000; font-style: italic; font-weight: bold;">/**
   * The Scanner being used
   */</span>
  <span style="color: #7F0055; font-weight: bold;">private</span> TAScanner scanner<span style="color: #000000;">;</span>
  <span style="color: #008000; font-style: italic; font-weight: bold;">/**
   * The stream being used
   */</span>
  <span style="color: #7F0055; font-weight: bold;">private</span> TAPrintStream stream<span style="color: #000000;">;</span>
  <span style="color: #008000; font-style: italic; font-weight: bold;">/**
   * The main text area, where calls to System.out go
   */</span>
  <span style="color: #7F0055; font-weight: bold;">private</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Ajtextarea+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">JTextArea</span></a> txtArea<span style="color: #000000;">;</span>
  <span style="color: #008000; font-style: italic; font-weight: bold;">/**
   * Where the user enters information
   */</span>
  <span style="color: #7F0055; font-weight: bold;">private</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Ajtextfield+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">JTextField</span></a> userField<span style="color: #000000;">;</span>
  <span style="color: #008000; font-style: italic; font-weight: bold;">/**
   * The submit button, not actually necessary
   */</span>
  <span style="color: #7F0055; font-weight: bold;">private</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Ajbutton+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">JButton</span></a> submit<span style="color: #000000;">;</span>
  <span style="color: #008000; font-style: italic; font-weight: bold;">/**
   * The JScrollPane wrapper
   */</span>
  <span style="color: #7F0055; font-weight: bold;">private</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Ajscrollpane+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">JScrollPane</span></a> sPane<span style="color: #000000;">;</span>
  <span style="color: #008000; font-style: italic; font-weight: bold;">/**
   * Creates the GUI
   */</span>
  <span style="color: #7F0055; font-weight: bold;">private</span> ConsoleGUI<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
  <span style="color: #000000;">&#123;</span>
    setSize<span style="color: #000000;">&#40;</span><span style="color: #cc66cc;">350</span>, <span style="color: #cc66cc;">350</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
    setTitle<span style="color: #000000;">&#40;</span><span style="color: #0000ff;">&quot;Console GUI&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
    setDefaultCloseOperation<span style="color: #000000;">&#40;</span>EXIT_ON_CLOSE<span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
    setLocationRelativeTo<span style="color: #000000;">&#40;</span><span style="color: #000066; font-weight: bold;">null</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
    setLayout<span style="color: #000000;">&#40;</span><span style="color: #7F0055; font-weight: bold;">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aborderlayout+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">BorderLayout</span></a><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
&nbsp;
    txtArea <span style="color: #000000;">=</span> <span style="color: #7F0055; font-weight: bold;">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Ajtextarea+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">JTextArea</span></a><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
    txtArea.<span style="color: #000000;">setEditable</span><span style="color: #000000;">&#40;</span><span style="color: #000066; font-weight: bold;">false</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
    sPane <span style="color: #000000;">=</span> <span style="color: #7F0055; font-weight: bold;">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Ajscrollpane+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">JScrollPane</span></a><span style="color: #000000;">&#40;</span>txtArea<span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
    add<span style="color: #000000;">&#40;</span>sPane, <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aborderlayout+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">BorderLayout</span></a>.<span style="color: #000000;">CENTER</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
    userField <span style="color: #000000;">=</span> <span style="color: #7F0055; font-weight: bold;">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Ajtextfield+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">JTextField</span></a><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
    userField.<span style="color: #000000;">setEditable</span><span style="color: #000000;">&#40;</span><span style="color: #000066; font-weight: bold;">false</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
    userField.<span style="color: #000000;">setActionCommand</span><span style="color: #000000;">&#40;</span><span style="color: #0000ff;">&quot;submit&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
    submit <span style="color: #000000;">=</span> <span style="color: #7F0055; font-weight: bold;">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Ajbutton+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">JButton</span></a><span style="color: #000000;">&#40;</span><span style="color: #0000ff;">&quot;Submit&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
    submit.<span style="color: #000000;">setActionCommand</span><span style="color: #000000;">&#40;</span><span style="color: #0000ff;">&quot;submit&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
    <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Ajpanel+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">JPanel</span></a> bot <span style="color: #000000;">=</span> <span style="color: #7F0055; font-weight: bold;">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Ajpanel+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">JPanel</span></a><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
    bot.<span style="color: #000000;">setLayout</span><span style="color: #000000;">&#40;</span><span style="color: #7F0055; font-weight: bold;">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aborderlayout+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">BorderLayout</span></a><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
    bot.<span style="color: #000000;">add</span><span style="color: #000000;">&#40;</span>userField, <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aborderlayout+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">BorderLayout</span></a>.<span style="color: #000000;">CENTER</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
    bot.<span style="color: #000000;">add</span><span style="color: #000000;">&#40;</span>submit, <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aborderlayout+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">BorderLayout</span></a>.<span style="color: #000000;">EAST</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
    add<span style="color: #000000;">&#40;</span>bot, <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aborderlayout+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">BorderLayout</span></a>.<span style="color: #000000;">SOUTH</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
  <span style="color: #000000;">&#125;</span>
  <span style="color: #008000; font-style: italic; font-weight: bold;">/**
   * Sets the program to use the ConsoleGUI instead of the regular 
   * Console
   */</span>
  <span style="color: #7F0055; font-weight: bold;">public</span> <span style="color: #7F0055; font-weight: bold;">static</span> <span style="color: #7F0055; font-weight: bold;">void</span> toGUI<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
  <span style="color: #000000;">&#123;</span>
    <span style="color: #7F0055; font-weight: bold;">try</span>
    <span style="color: #000000;">&#123;</span>
      <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aswingutilities+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">SwingUtilities</span></a>.<span style="color: #000000;">invokeAndWait</span><span style="color: #000000;">&#40;</span><span style="color: #7F0055; font-weight: bold;">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Arunnable+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">Runnable</span></a><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
        @Override
        <span style="color: #7F0055; font-weight: bold;">public</span> <span style="color: #7F0055; font-weight: bold;">void</span> run<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
        <span style="color: #000000;">&#123;</span>
          gui <span style="color: #000000;">=</span> <span style="color: #7F0055; font-weight: bold;">new</span> ConsoleGUI<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
          gui.<span style="color: #000000;">stream</span> <span style="color: #000000;">=</span> gui.<span style="color: #000000;">createPrintStream</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
          gui.<span style="color: #000000;">setVisible</span><span style="color: #000000;">&#40;</span><span style="color: #000066; font-weight: bold;">true</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
        <span style="color: #000000;">&#125;</span>
      <span style="color: #000000;">&#125;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
    <span style="color: #000000;">&#125;</span><span style="color: #7F0055; font-weight: bold;">catch</span><span style="color: #000000;">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aexception+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">Exception</span></a> exc<span style="color: #000000;">&#41;</span>
    <span style="color: #000000;">&#123;</span>
      handleException<span style="color: #000000;">&#40;</span><span style="color: #0000ff;">&quot;Failed to convert to gui&quot;</span>, exc, saveRun<span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
    <span style="color: #000000;">&#125;</span>
&nbsp;
  <span style="color: #000000;">&#125;</span>
&nbsp;
  <span style="color: #7F0055; font-weight: bold;">public</span> <span style="color: #7F0055; font-weight: bold;">static</span> <span style="color: #7F0055; font-weight: bold;">void</span> setConsoleTitle<span style="color: #000000;">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">String</span></a> tit<span style="color: #000000;">&#41;</span>
  <span style="color: #000000;">&#123;</span>
    gui.<span style="color: #000000;">setTitle</span><span style="color: #000000;">&#40;</span>tit<span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
  <span style="color: #000000;">&#125;</span>
  <span style="color: #008000; font-style: italic; font-weight: bold;">/**
   * Creates a TAPrintStream based on the text area
   */</span>
  <span style="color: #7F0055; font-weight: bold;">private</span> TAPrintStream createPrintStream<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
  <span style="color: #000000;">&#123;</span>
    <span style="color: #7F0055; font-weight: bold;">return</span> <span style="color: #7F0055; font-weight: bold;">new</span> TAPrintStream<span style="color: #000000;">&#40;</span>txtArea<span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
  <span style="color: #000000;">&#125;</span>
  <span style="color: #008000; font-style: italic; font-weight: bold;">/**
   * @return a new TAScanner
   */</span>
  <span style="color: #7F0055; font-weight: bold;">private</span> TAScanner createScanner<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
  <span style="color: #000000;">&#123;</span>
    <span style="color: #7F0055; font-weight: bold;">return</span> <span style="color: #7F0055; font-weight: bold;">new</span> TAScanner<span style="color: #000000;">&#40;</span>userField, submit<span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
  <span style="color: #000000;">&#125;</span>
  <span style="color: #008000; font-style: italic; font-weight: bold;">/**
   * @return the print stream
   */</span>
  <span style="color: #7F0055; font-weight: bold;">public</span> <span style="color: #7F0055; font-weight: bold;">static</span> TAPrintStream getStream<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
  <span style="color: #000000;">&#123;</span>
    <span style="color: #7F0055; font-weight: bold;">return</span> gui.<span style="color: #000000;">stream</span><span style="color: #000000;">;</span>
  <span style="color: #000000;">&#125;</span>
  <span style="color: #008000; font-style: italic; font-weight: bold;">/**
   * Sets if it is saving the text, by default false
   * @param b if it should save text
   */</span>
  <span style="color: #7F0055; font-weight: bold;">public</span> <span style="color: #7F0055; font-weight: bold;">static</span> <span style="color: #7F0055; font-weight: bold;">void</span> setSaveText<span style="color: #000000;">&#40;</span><span style="color: #000066; font-weight: bold;">boolean</span> b<span style="color: #000000;">&#41;</span>
  <span style="color: #000000;">&#123;</span>
    saveRun <span style="color: #000000;">=</span> b<span style="color: #000000;">;</span>
  <span style="color: #000000;">&#125;</span>
  <span style="color: #008000; font-style: italic; font-weight: bold;">/**
   * @return the scanner to use.  Has most methods of Scanner 
   * @throws NullPointerException if called before toGUI
   */</span>
  <span style="color: #7F0055; font-weight: bold;">public</span> <span style="color: #7F0055; font-weight: bold;">static</span> TAScanner getScanner<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
  <span style="color: #000000;">&#123;</span>
    <span style="color: #7F0055; font-weight: bold;">if</span><span style="color: #000000;">&#40;</span>gui.<span style="color: #000000;">scanner</span> <span style="color: #000000;">==</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #000000;">&#41;</span>
      gui.<span style="color: #000000;">scanner</span> <span style="color: #000000;">=</span> gui.<span style="color: #000000;">createScanner</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
    <span style="color: #7F0055; font-weight: bold;">return</span> gui.<span style="color: #000000;">scanner</span><span style="color: #000000;">;</span>
  <span style="color: #000000;">&#125;</span>
&nbsp;
  <span style="color: #008000; font-style: italic; font-weight: bold;">/**
   * Handles an exception with the specified message and
   * underlying throwable.  This method will handle all
   * exceptions appropriately. 
   * 
   * This method will return normally.
   * 
   * @param msg the message, can be null.
   * @param exc the exception, cannot be null
   * @param saveToFile if file io should be attempted.
   */</span>
  <span style="color: #7F0055; font-weight: bold;">public</span> <span style="color: #7F0055; font-weight: bold;">static</span> <span style="color: #7F0055; font-weight: bold;">void</span> handleException<span style="color: #000000;">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">String</span></a> msg, <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Athrowable+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">Throwable</span></a> exc, <span style="color: #000066; font-weight: bold;">boolean</span> saveToFile<span style="color: #000000;">&#41;</span>
  <span style="color: #000000;">&#123;</span>
    <span style="color: #7F0055; font-weight: bold;">try</span>
    <span style="color: #000000;">&#123;</span>
      TAPrintStream out <span style="color: #000000;">=</span> getStream<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
&nbsp;
      out.<span style="color: #000000;">print</span><span style="color: #000000;">&#40;</span>msg<span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
      out.<span style="color: #000000;">println</span><span style="color: #000000;">&#40;</span><span style="color: #0000ff;">&quot; - &quot;</span> <span style="color: #000000;">+</span> exc.<span style="color: #000000;">getClass</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>.<span style="color: #000000;">getSimpleName</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
      StackTraceElement<span style="color: #000000;">&#91;</span><span style="color: #000000;">&#93;</span> elements <span style="color: #000000;">=</span> exc.<span style="color: #000000;">getStackTrace</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
&nbsp;
      <span style="color: #7F0055; font-weight: bold;">for</span><span style="color: #000000;">&#40;</span>StackTraceElement t <span style="color: #000000;">:</span> elements<span style="color: #000000;">&#41;</span>
      <span style="color: #000000;">&#123;</span>
        out.<span style="color: #000000;">println</span><span style="color: #000000;">&#40;</span>t<span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
      <span style="color: #000000;">&#125;</span>
    <span style="color: #000000;">&#125;</span><span style="color: #7F0055; font-weight: bold;">catch</span><span style="color: #000000;">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aexception+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">Exception</span></a> exce<span style="color: #000000;">&#41;</span>
    <span style="color: #000000;">&#123;</span>
      <span style="color: #3F7F5F; font-style: italic;">// Not cool.</span>
      exce.<span style="color: #000000;">printStackTrace</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
    <span style="color: #000000;">&#125;</span>
  <span style="color: #000000;">&#125;</span>
  <span style="color: #008000; font-style: italic; font-weight: bold;">/**
   * For testing purposes, shows an example usage of this program
   */</span>
  <span style="color: #7F0055; font-weight: bold;">public</span> <span style="color: #7F0055; font-weight: bold;">static</span> <span style="color: #7F0055; font-weight: bold;">void</span> main<span style="color: #000000;">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">String</span></a><span style="color: #000000;">&#91;</span><span style="color: #000000;">&#93;</span> args<span style="color: #000000;">&#41;</span>
  <span style="color: #000000;">&#123;</span>
    ConsoleGUI.<span style="color: #000000;">toGUI</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
    <span style="color: #3F7F5F; font-style: italic;">//ConsoleGUI.setSaveText(true);</span>
    TAScanner scanner <span style="color: #000000;">=</span> ConsoleGUI.<span style="color: #000000;">getScanner</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
    TAPrintStream out <span style="color: #000000;">=</span> ConsoleGUI.<span style="color: #000000;">getStream</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
    out.<span style="color: #000000;">println</span><span style="color: #000000;">&#40;</span><span style="color: #0000ff;">&quot;Type a string&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
    <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">String</span></a> str <span style="color: #000000;">=</span> scanner.<span style="color: #000000;">nextLine</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
    out.<span style="color: #000000;">println</span><span style="color: #000000;">&#40;</span><span style="color: #0000ff;">&quot;Type an int&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
    <span style="color: #000066; font-weight: bold;">int</span> i <span style="color: #000000;">=</span> scanner.<span style="color: #000000;">nextInt</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
    out.<span style="color: #000000;">println</span><span style="color: #000000;">&#40;</span><span style="color: #0000ff;">&quot;You typed &quot;</span><span style="color: #000000;">+</span>str<span style="color: #000000;">+</span><span style="color: #0000ff;">&quot; and &quot;</span><span style="color: #000000;">+</span>i<span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
    out.<span style="color: #000000;">println</span><span style="color: #000000;">&#40;</span><span style="color: #0000ff;">&quot;Say something starting with y&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
    <span style="color: #000066; font-weight: bold;">boolean</span> b <span style="color: #000000;">=</span> scanner.<span style="color: #000000;">nextBoolean</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
    out.<span style="color: #000000;">println</span><span style="color: #000000;">&#40;</span>b<span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
    out.<span style="color: #000000;">println</span><span style="color: #000000;">&#40;</span><span style="color: #0000ff;">&quot;Say something starting with n&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
    b <span style="color: #000000;">=</span> scanner.<span style="color: #000000;">nextBoolean</span><span style="color: #000000;">&#40;</span><span style="color: #0000ff;">&quot;n&quot;</span>, <span style="color: #000066; font-weight: bold;">true</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
    out.<span style="color: #000000;">println</span><span style="color: #000000;">&#40;</span>b<span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
    out.<span style="color: #000000;">println</span><span style="color: #000000;">&#40;</span><span style="color: #0000ff;">&quot;Say banana&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
    b <span style="color: #000000;">=</span> scanner.<span style="color: #000000;">nextBoolean</span><span style="color: #000000;">&#40;</span><span style="color: #0000ff;">&quot;banana&quot;</span>, <span style="color: #000066; font-weight: bold;">false</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
    out.<span style="color: #000000;">println</span><span style="color: #000000;">&#40;</span>b<span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
&nbsp;
    out.<span style="color: #000000;">println</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
    <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aruntimeexception+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">RuntimeException</span></a> exc <span style="color: #000000;">=</span> <span style="color: #7F0055; font-weight: bold;">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aruntimeexception+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">RuntimeException</span></a><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
    handleException<span style="color: #000000;">&#40;</span><span style="color: #0000ff;">&quot;Test&quot;</span>, exc, <span style="color: #000066; font-weight: bold;">true</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
    <span style="color: #3F7F5F; font-style: italic;">//for(int i = 0; i &lt; 50; i++) { out.println(&quot;Purposeful Spam&quot;); }</span>
  <span style="color: #000000;">&#125;</span>
  @Override
  <span style="color: #7F0055; font-weight: bold;">public</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">String</span></a> toString<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
  <span style="color: #000000;">&#123;</span>
    <span style="color: #7F0055; font-weight: bold;">return</span> <span style="color: #0000ff;">&quot;initialized&quot;</span><span style="color: #000000;">;</span>
  <span style="color: #000000;">&#125;</span>
  <span style="color: #008000; font-style: italic; font-weight: bold;">/**
   * Short for TextAreaPrintStream, this stream sends all messages
   * to the GUI instead of the regular System.out
   * 
   * @author Timothy Moore
   */</span>
  <span style="color: #7F0055; font-weight: bold;">public</span> <span style="color: #7F0055; font-weight: bold;">class</span> TAPrintStream
  <span style="color: #000000;">&#123;</span>
    <span style="color: #7F0055; font-weight: bold;">private</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Ajtextarea+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">JTextArea</span></a> txtArea<span style="color: #000000;">;</span>
    <span style="color: #7F0055; font-weight: bold;">private</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Abufferedwriter+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">BufferedWriter</span></a> fileWriter<span style="color: #000000;">;</span>
    <span style="color: #7F0055; font-weight: bold;">private</span> <span style="color: #7F0055; font-weight: bold;">final</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Afile+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">File</span></a> file <span style="color: #000000;">=</span> <span style="color: #7F0055; font-weight: bold;">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Afile+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">File</span></a><span style="color: #000000;">&#40;</span><span style="color: #0000ff;">&quot;lastRun.txt&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
    <span style="color: #008000; font-style: italic; font-weight: bold;">/**
     * Create a print stream to the specified text area
     */</span>
    <span style="color: #7F0055; font-weight: bold;">private</span> TAPrintStream<span style="color: #000000;">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Ajtextarea+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">JTextArea</span></a> txtArea<span style="color: #000000;">&#41;</span>
    <span style="color: #000000;">&#123;</span>
      <span style="color: #7F0055; font-weight: bold;">this</span>.<span style="color: #000000;">txtArea</span> <span style="color: #000000;">=</span> txtArea<span style="color: #000000;">;</span>
      <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Adefaultcaret+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">DefaultCaret</span></a> caret <span style="color: #000000;">=</span> <span style="color: #000000;">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Adefaultcaret+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">DefaultCaret</span></a><span style="color: #000000;">&#41;</span>txtArea.<span style="color: #000000;">getCaret</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
      caret.<span style="color: #000000;">setUpdatePolicy</span><span style="color: #000000;">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Adefaultcaret+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">DefaultCaret</span></a>.<span style="color: #000000;">ALWAYS_UPDATE</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
    <span style="color: #000000;">&#125;</span>
&nbsp;
    <span style="color: #7F0055; font-weight: bold;">public</span> <span style="color: #7F0055; font-weight: bold;">void</span> print<span style="color: #000000;">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aobject+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">Object</span></a> msg<span style="color: #000000;">&#41;</span>
    <span style="color: #000000;">&#123;</span>
      txtArea.<span style="color: #000000;">append</span><span style="color: #000000;">&#40;</span>msg.<span style="color: #000000;">toString</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
      <span style="color: #7F0055; font-weight: bold;">if</span><span style="color: #000000;">&#40;</span>saveRun<span style="color: #000000;">&#41;</span>
      <span style="color: #000000;">&#123;</span>
        <span style="color: #7F0055; font-weight: bold;">if</span><span style="color: #000000;">&#40;</span>fileWriter <span style="color: #000000;">==</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #000000;">&#41;</span>
        <span style="color: #000000;">&#123;</span>
          <span style="color: #3F7F5F; font-style: italic;">//System.out.println(&quot;Creating file writer&quot;);</span>
          <span style="color: #7F0055; font-weight: bold;">try</span>
          <span style="color: #000000;">&#123;</span>
&nbsp;
            file.<span style="color: #000000;">createNewFile</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
            fileWriter <span style="color: #000000;">=</span> <span style="color: #7F0055; font-weight: bold;">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Abufferedwriter+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">BufferedWriter</span></a><span style="color: #000000;">&#40;</span><span style="color: #7F0055; font-weight: bold;">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Afilewriter+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">FileWriter</span></a><span style="color: #000000;">&#40;</span>file<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
          <span style="color: #000000;">&#125;</span><span style="color: #7F0055; font-weight: bold;">catch</span><span style="color: #000000;">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aexception+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">Exception</span></a> exc<span style="color: #000000;">&#41;</span>
          <span style="color: #000000;">&#123;</span>
            saveRun <span style="color: #000000;">=</span> <span style="color: #000066; font-weight: bold;">false</span><span style="color: #000000;">;</span>
            handleException<span style="color: #000000;">&#40;</span><span style="color: #0000ff;">&quot;Failed to create file&quot;</span>, exc, <span style="color: #000066; font-weight: bold;">false</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
          <span style="color: #000000;">&#125;</span>
          <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aruntime+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">Runtime</span></a>.<span style="color: #000000;">getRuntime</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>.<span style="color: #000000;">addShutdownHook</span><span style="color: #000000;">&#40;</span><span style="color: #7F0055; font-weight: bold;">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Athread+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">Thread</span></a><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
                                                   <span style="color: #000000;">&#123;</span>
            @Override
            <span style="color: #7F0055; font-weight: bold;">public</span> <span style="color: #7F0055; font-weight: bold;">void</span> run<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
            <span style="color: #000000;">&#123;</span>
              <span style="color: #7F0055; font-weight: bold;">try</span>
              <span style="color: #000000;">&#123;</span>
                fileWriter.<span style="color: #000000;">close</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
              <span style="color: #000000;">&#125;</span><span style="color: #7F0055; font-weight: bold;">catch</span><span style="color: #000000;">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aioexception+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">IOException</span></a> e<span style="color: #000000;">&#41;</span>
              <span style="color: #000000;">&#123;</span>
                handleException<span style="color: #000000;">&#40;</span><span style="color: #0000ff;">&quot;Failed to close writer&quot;</span>, e, <span style="color: #000066; font-weight: bold;">false</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
              <span style="color: #000000;">&#125;</span>
            <span style="color: #000000;">&#125;</span>
          <span style="color: #000000;">&#125;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
        <span style="color: #000000;">&#125;</span>
        <span style="color: #3F7F5F; font-style: italic;">//System.out.println(&quot;Saving to filewriter&quot;);</span>
        <span style="color: #7F0055; font-weight: bold;">try</span>
        <span style="color: #000000;">&#123;</span>
          <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">String</span></a><span style="color: #000000;">&#91;</span><span style="color: #000000;">&#93;</span> msgs <span style="color: #000000;">=</span> msg.<span style="color: #000000;">toString</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>.<span style="color: #000000;">split</span><span style="color: #000000;">&#40;</span><span style="color: #0000ff;">&quot;/n&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
          <span style="color: #7F0055; font-weight: bold;">for</span><span style="color: #000000;">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">String</span></a> s <span style="color: #000000;">:</span> msgs<span style="color: #000000;">&#41;</span>
          <span style="color: #000000;">&#123;</span>
            fileWriter.<span style="color: #000000;">write</span><span style="color: #000000;">&#40;</span>s<span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
            fileWriter.<span style="color: #000000;">newLine</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
          <span style="color: #000000;">&#125;</span>
        <span style="color: #000000;">&#125;</span><span style="color: #7F0055; font-weight: bold;">catch</span><span style="color: #000000;">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aexception+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">Exception</span></a> e<span style="color: #000000;">&#41;</span>
        <span style="color: #000000;">&#123;</span>
          handleException<span style="color: #000000;">&#40;</span><span style="color: #0000ff;">&quot;Failed to write to file&quot;</span>, e, <span style="color: #000066; font-weight: bold;">false</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
          saveRun <span style="color: #000000;">=</span> <span style="color: #000066; font-weight: bold;">false</span><span style="color: #000000;">;</span>
        <span style="color: #000000;">&#125;</span>
      <span style="color: #000000;">&#125;</span>
&nbsp;
    <span style="color: #000000;">&#125;</span>
    <span style="color: #7F0055; font-weight: bold;">public</span> <span style="color: #7F0055; font-weight: bold;">void</span> print<span style="color: #000000;">&#40;</span><span style="color: #000066; font-weight: bold;">boolean</span> msg<span style="color: #000000;">&#41;</span>
    <span style="color: #000000;">&#123;</span>
      print<span style="color: #000000;">&#40;</span><span style="color: #7F0055; font-weight: bold;">new</span> StringBuilder<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>.<span style="color: #000000;">append</span><span style="color: #000000;">&#40;</span>msg<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
    <span style="color: #000000;">&#125;</span>
    <span style="color: #7F0055; font-weight: bold;">public</span> <span style="color: #7F0055; font-weight: bold;">void</span> print<span style="color: #000000;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> msg<span style="color: #000000;">&#41;</span>
    <span style="color: #000000;">&#123;</span>
      print<span style="color: #000000;">&#40;</span><span style="color: #7F0055; font-weight: bold;">new</span> StringBuilder<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>.<span style="color: #000000;">append</span><span style="color: #000000;">&#40;</span>msg<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
    <span style="color: #000000;">&#125;</span>
    <span style="color: #7F0055; font-weight: bold;">public</span> <span style="color: #7F0055; font-weight: bold;">void</span> print<span style="color: #000000;">&#40;</span><span style="color: #000066; font-weight: bold;">long</span> msg<span style="color: #000000;">&#41;</span>
    <span style="color: #000000;">&#123;</span>
      print<span style="color: #000000;">&#40;</span><span style="color: #7F0055; font-weight: bold;">new</span> StringBuilder<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>.<span style="color: #000000;">append</span><span style="color: #000000;">&#40;</span>msg<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
    <span style="color: #000000;">&#125;</span>
    <span style="color: #7F0055; font-weight: bold;">public</span> <span style="color: #7F0055; font-weight: bold;">void</span> print<span style="color: #000000;">&#40;</span><span style="color: #000066; font-weight: bold;">double</span> msg<span style="color: #000000;">&#41;</span>
    <span style="color: #000000;">&#123;</span>
      print<span style="color: #000000;">&#40;</span><span style="color: #7F0055; font-weight: bold;">new</span> StringBuilder<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>.<span style="color: #000000;">append</span><span style="color: #000000;">&#40;</span>msg<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
    <span style="color: #000000;">&#125;</span>
&nbsp;
    <span style="color: #7F0055; font-weight: bold;">public</span> <span style="color: #7F0055; font-weight: bold;">void</span> println<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
    <span style="color: #000000;">&#123;</span>
      print<span style="color: #000000;">&#40;</span><span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
    <span style="color: #000000;">&#125;</span>
&nbsp;
    <span style="color: #7F0055; font-weight: bold;">public</span> <span style="color: #7F0055; font-weight: bold;">void</span> println<span style="color: #000000;">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aobject+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">Object</span></a> msg<span style="color: #000000;">&#41;</span>
    <span style="color: #000000;">&#123;</span>
      print<span style="color: #000000;">&#40;</span><span style="color: #7F0055; font-weight: bold;">new</span> StringBuilder<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>.<span style="color: #000000;">append</span><span style="color: #000000;">&#40;</span>msg<span style="color: #000000;">&#41;</span>.<span style="color: #000000;">append</span><span style="color: #000000;">&#40;</span><span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
    <span style="color: #000000;">&#125;</span>
    <span style="color: #7F0055; font-weight: bold;">public</span> <span style="color: #7F0055; font-weight: bold;">void</span> println<span style="color: #000000;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> msg<span style="color: #000000;">&#41;</span>
    <span style="color: #000000;">&#123;</span>
      println<span style="color: #000000;">&#40;</span><span style="color: #7F0055; font-weight: bold;">new</span> StringBuilder<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>.<span style="color: #000000;">append</span><span style="color: #000000;">&#40;</span>msg<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
    <span style="color: #000000;">&#125;</span>
    <span style="color: #7F0055; font-weight: bold;">public</span> <span style="color: #7F0055; font-weight: bold;">void</span> println<span style="color: #000000;">&#40;</span><span style="color: #000066; font-weight: bold;">long</span> msg<span style="color: #000000;">&#41;</span>
    <span style="color: #000000;">&#123;</span>
      println<span style="color: #000000;">&#40;</span><span style="color: #7F0055; font-weight: bold;">new</span> StringBuilder<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>.<span style="color: #000000;">append</span><span style="color: #000000;">&#40;</span>msg<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
    <span style="color: #000000;">&#125;</span>
    <span style="color: #7F0055; font-weight: bold;">public</span> <span style="color: #7F0055; font-weight: bold;">void</span> println<span style="color: #000000;">&#40;</span><span style="color: #000066; font-weight: bold;">boolean</span> msg<span style="color: #000000;">&#41;</span>
    <span style="color: #000000;">&#123;</span>
      println<span style="color: #000000;">&#40;</span><span style="color: #7F0055; font-weight: bold;">new</span> StringBuilder<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>.<span style="color: #000000;">append</span><span style="color: #000000;">&#40;</span>msg<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
    <span style="color: #000000;">&#125;</span>
    <span style="color: #7F0055; font-weight: bold;">public</span> <span style="color: #7F0055; font-weight: bold;">void</span> println<span style="color: #000000;">&#40;</span><span style="color: #000066; font-weight: bold;">double</span> msg<span style="color: #000000;">&#41;</span>
    <span style="color: #000000;">&#123;</span>
      println<span style="color: #000000;">&#40;</span><span style="color: #7F0055; font-weight: bold;">new</span> StringBuilder<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>.<span style="color: #000000;">append</span><span style="color: #000000;">&#40;</span>msg<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
    <span style="color: #000000;">&#125;</span>
  <span style="color: #000000;">&#125;</span>
  <span style="color: #008000; font-style: italic; font-weight: bold;">/**
   * Short for TextAreaScanner, this Scanner retrieves messages
   * from the GUI instead of the regular new Scanner(System.in)
   * 
   * @author Timothy Moore
   */</span>
  <span style="color: #7F0055; font-weight: bold;">public</span> <span style="color: #7F0055; font-weight: bold;">class</span> TAScanner <span style="color: #7F0055; font-weight: bold;">implements</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aactionlistener+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">ActionListener</span></a>
  <span style="color: #000000;">&#123;</span>
    <span style="color: #7F0055; font-weight: bold;">private</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">String</span></a> str<span style="color: #000000;">;</span>
    <span style="color: #7F0055; font-weight: bold;">private</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Ajtextfield+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">JTextField</span></a> field<span style="color: #000000;">;</span>
    <span style="color: #7F0055; font-weight: bold;">private</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Ajbutton+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">JButton</span></a> but<span style="color: #000000;">;</span>
    <span style="color: #008000; font-style: italic; font-weight: bold;">/**
     * Creates a scanner based on the specified text field
     * and button
     */</span>
    <span style="color: #7F0055; font-weight: bold;">private</span> TAScanner<span style="color: #000000;">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Ajtextfield+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">JTextField</span></a> field, <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Ajbutton+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">JButton</span></a> but<span style="color: #000000;">&#41;</span>
    <span style="color: #000000;">&#123;</span>
      <span style="color: #7F0055; font-weight: bold;">this</span>.<span style="color: #000000;">field</span> <span style="color: #000000;">=</span> field<span style="color: #000000;">;</span>
      <span style="color: #7F0055; font-weight: bold;">this</span>.<span style="color: #000000;">but</span> <span style="color: #000000;">=</span> but<span style="color: #000000;">;</span>
      field.<span style="color: #000000;">addActionListener</span><span style="color: #000000;">&#40;</span><span style="color: #7F0055; font-weight: bold;">this</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
      but.<span style="color: #000000;">addActionListener</span><span style="color: #000000;">&#40;</span><span style="color: #7F0055; font-weight: bold;">this</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
    <span style="color: #000000;">&#125;</span>
    <span style="color: #008000; font-style: italic; font-weight: bold;">/**
     * Reads one string
     */</span>
    <span style="color: #7F0055; font-weight: bold;">public</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">String</span></a> readLine<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
    <span style="color: #000000;">&#123;</span>
      field.<span style="color: #000000;">setEditable</span><span style="color: #000000;">&#40;</span><span style="color: #000066; font-weight: bold;">true</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
      str <span style="color: #000000;">=</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #000000;">;</span>
      <span style="color: #7F0055; font-weight: bold;">while</span><span style="color: #000000;">&#40;</span>str <span style="color: #000000;">==</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #000000;">&#41;</span>
      <span style="color: #000000;">&#123;</span>
        delay<span style="color: #000000;">&#40;</span><span style="color: #cc66cc;">100</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
      <span style="color: #000000;">&#125;</span>
      ConsoleGUI.<span style="color: #000000;">getStream</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>.<span style="color: #000000;">println</span><span style="color: #000000;">&#40;</span><span style="color: #7F0055; font-weight: bold;">new</span> StringBuilder<span style="color: #000000;">&#40;</span><span style="color: #0000ff;">&quot;&gt; &quot;</span><span style="color: #000000;">&#41;</span>.<span style="color: #000000;">append</span><span style="color: #000000;">&#40;</span>str<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
      <span style="color: #7F0055; font-weight: bold;">return</span> str<span style="color: #000000;">;</span>
    <span style="color: #000000;">&#125;</span>
    <span style="color: #008000; font-style: italic; font-weight: bold;">/**
     * Same as readLine()
     */</span>
    <span style="color: #7F0055; font-weight: bold;">public</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">String</span></a> nextLine<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
    <span style="color: #000000;">&#123;</span>
      <span style="color: #7F0055; font-weight: bold;">return</span> readLine<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
    <span style="color: #000000;">&#125;</span>
    <span style="color: #008000; font-style: italic; font-weight: bold;">/**
     * Same as readInt()
     */</span>
    <span style="color: #7F0055; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">int</span> nextInt<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
    <span style="color: #000000;">&#123;</span>
      <span style="color: #7F0055; font-weight: bold;">return</span> readInt<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
    <span style="color: #000000;">&#125;</span>
    <span style="color: #008000; font-style: italic; font-weight: bold;">/**
     * Same as readBoolean()
     */</span>
    <span style="color: #7F0055; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">boolean</span> nextBoolean<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
    <span style="color: #000000;">&#123;</span>
      <span style="color: #7F0055; font-weight: bold;">return</span> readBoolean<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
    <span style="color: #000000;">&#125;</span>
    <span style="color: #008000; font-style: italic; font-weight: bold;">/**
     * Same as readLong()
     */</span>
    <span style="color: #7F0055; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">long</span> nextLong<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
    <span style="color: #000000;">&#123;</span>
      <span style="color: #7F0055; font-weight: bold;">return</span> readLong<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
    <span style="color: #000000;">&#125;</span>
    <span style="color: #008000; font-style: italic; font-weight: bold;">/**
     * @return an integer from user
     */</span>
    <span style="color: #7F0055; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">int</span> readInt<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
    <span style="color: #000000;">&#123;</span>
      <span style="color: #7F0055; font-weight: bold;">try</span>
      <span style="color: #000000;">&#123;</span>
        <span style="color: #7F0055; font-weight: bold;">return</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Ainteger+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">Integer</span></a>.<span style="color: #000000;">valueOf</span><span style="color: #000000;">&#40;</span>readLine<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
      <span style="color: #000000;">&#125;</span><span style="color: #7F0055; font-weight: bold;">catch</span><span style="color: #000000;">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Anumberformatexception+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">NumberFormatException</span></a> exc<span style="color: #000000;">&#41;</span>
      <span style="color: #000000;">&#123;</span>
        <span style="color: #7F0055; font-weight: bold;">throw</span> <span style="color: #7F0055; font-weight: bold;">new</span> InputMismatchException<span style="color: #000000;">&#40;</span>exc.<span style="color: #000000;">getMessage</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
      <span style="color: #000000;">&#125;</span>
    <span style="color: #000000;">&#125;</span>
    <span style="color: #008000; font-style: italic; font-weight: bold;">/**
     * @return a long from user
     */</span>
    <span style="color: #7F0055; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">long</span> readLong<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
    <span style="color: #000000;">&#123;</span>
      <span style="color: #7F0055; font-weight: bold;">try</span>
      <span style="color: #000000;">&#123;</span>
        <span style="color: #7F0055; font-weight: bold;">return</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Along+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">Long</span></a>.<span style="color: #000000;">valueOf</span><span style="color: #000000;">&#40;</span>readLine<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
      <span style="color: #000000;">&#125;</span><span style="color: #7F0055; font-weight: bold;">catch</span><span style="color: #000000;">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Anumberformatexception+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">NumberFormatException</span></a> exc<span style="color: #000000;">&#41;</span>
      <span style="color: #000000;">&#123;</span>
        <span style="color: #7F0055; font-weight: bold;">throw</span> <span style="color: #7F0055; font-weight: bold;">new</span> InputMismatchException<span style="color: #000000;">&#40;</span>exc.<span style="color: #000000;">getMessage</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
      <span style="color: #000000;">&#125;</span>
    <span style="color: #000000;">&#125;</span>
    <span style="color: #008000; font-style: italic; font-weight: bold;">/**
     * @return a boolean from user, assuming anything starting with a y is yes
     */</span>
    <span style="color: #7F0055; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">boolean</span> readBoolean<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
    <span style="color: #000000;">&#123;</span>
      <span style="color: #7F0055; font-weight: bold;">return</span> readBoolean<span style="color: #000000;">&#40;</span><span style="color: #0000ff;">&quot;Y&quot;</span>, <span style="color: #000066; font-weight: bold;">true</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
    <span style="color: #000000;">&#125;</span>
    <span style="color: #008000; font-style: italic; font-weight: bold;">/**
     * This is not case sensitive.
     * @return a boolean from user
     * @param str the string that the response needs to be true
     * @param start if the string has to start with the string or be completely that string
     */</span>
    <span style="color: #7F0055; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">boolean</span> readBoolean<span style="color: #000000;">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">String</span></a> str, <span style="color: #000066; font-weight: bold;">boolean</span> start<span style="color: #000000;">&#41;</span>
    <span style="color: #000000;">&#123;</span>
      <span style="color: #7F0055; font-weight: bold;">if</span><span style="color: #000000;">&#40;</span>start<span style="color: #000000;">&#41;</span>
      <span style="color: #000000;">&#123;</span>
        <span style="color: #7F0055; font-weight: bold;">return</span> readLine<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>.<span style="color: #000000;">toLowerCase</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>.<span style="color: #000000;">startsWith</span><span style="color: #000000;">&#40;</span>str.<span style="color: #000000;">toLowerCase</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
      <span style="color: #000000;">&#125;</span><span style="color: #7F0055; font-weight: bold;">else</span>
      <span style="color: #000000;">&#123;</span>
        <span style="color: #7F0055; font-weight: bold;">return</span> readLine<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>.<span style="color: #000000;">equalsIgnoreCase</span><span style="color: #000000;">&#40;</span>str<span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
      <span style="color: #000000;">&#125;</span>
    <span style="color: #000000;">&#125;</span>
    <span style="color: #008000; font-style: italic; font-weight: bold;">/**
     * Same as &lt;code&gt;readBoolean(String str, boolean str)&lt;/code&gt;
     */</span>
    <span style="color: #7F0055; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">boolean</span> nextBoolean<span style="color: #000000;">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">String</span></a> str, <span style="color: #000066; font-weight: bold;">boolean</span> start<span style="color: #000000;">&#41;</span>
    <span style="color: #000000;">&#123;</span>
      <span style="color: #7F0055; font-weight: bold;">return</span> readBoolean<span style="color: #000000;">&#40;</span>str, start<span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
    <span style="color: #000000;">&#125;</span>
    @Override
    <span style="color: #7F0055; font-weight: bold;">public</span> <span style="color: #7F0055; font-weight: bold;">void</span> actionPerformed<span style="color: #000000;">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aactionevent+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">ActionEvent</span></a> event<span style="color: #000000;">&#41;</span>
    <span style="color: #000000;">&#123;</span>
      str <span style="color: #000000;">=</span> field.<span style="color: #000000;">getText</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
      field.<span style="color: #000000;">setText</span><span style="color: #000000;">&#40;</span><span style="color: #0000ff;">&quot;&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
    <span style="color: #000000;">&#125;</span>
  <span style="color: #000000;">&#125;</span>
  <span style="color: #008000; font-style: italic; font-weight: bold;">/**
   * Like thread.sleep but does not throw exceptions. Use with caution
   * @param ms the time in ms
   */</span>
  <span style="color: #7F0055; font-weight: bold;">public</span> <span style="color: #7F0055; font-weight: bold;">static</span> <span style="color: #7F0055; font-weight: bold;">void</span> delay<span style="color: #000000;">&#40;</span><span style="color: #000066; font-weight: bold;">long</span> ms<span style="color: #000000;">&#41;</span>
  <span style="color: #000000;">&#123;</span>
    <span style="color: #7F0055; font-weight: bold;">try</span>
    <span style="color: #000000;">&#123;</span>
      <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Athread+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">Thread</span></a>.<span style="color: #000000;">sleep</span><span style="color: #000000;">&#40;</span>ms<span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
    <span style="color: #000000;">&#125;</span><span style="color: #7F0055; font-weight: bold;">catch</span><span style="color: #000000;">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Ainterruptedexception+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">InterruptedException</span></a> exc<span style="color: #000000;">&#41;</span>
    <span style="color: #000000;">&#123;</span>
&nbsp;
    <span style="color: #000000;">&#125;</span>
  <span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span></pre></div></div>

</div> Note - If you find any bugs / inefficiencies do talk!<br />
<br />
EDIT: <br />
Fixed some inefficiencies and added saveLastRun</blockquote>

]]></content:encoded>
			<dc:creator>Tjstretch</dc:creator>
			<guid isPermaLink="true">http://www.javaprogrammingforums.com/blogs/tjstretch/33-windows-7-console.html</guid>
		</item>
	</channel>
</rss>
