<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java_Tutorial%2FThread%2FThread_Stop</id>
		<title>Java Tutorial/Thread/Thread Stop - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java_Tutorial%2FThread%2FThread_Stop"/>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java_Tutorial/Thread/Thread_Stop&amp;action=history"/>
		<updated>2026-04-21T22:39:53Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java_Tutorial/Thread/Thread_Stop&amp;diff=2759&amp;oldid=prev</id>
		<title> в 17:44, 31 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java_Tutorial/Thread/Thread_Stop&amp;diff=2759&amp;oldid=prev"/>
				<updated>2010-05-31T17:44:26Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 17:44, 31 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java_Tutorial/Thread/Thread_Stop&amp;diff=2760&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java_Tutorial/Thread/Thread_Stop&amp;diff=2760&amp;oldid=prev"/>
				<updated>2010-05-31T15:18:01Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==  Stopping a Thread: Use boolean value to stop a thread ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
class CounterThread extends Thread {&lt;br /&gt;
  public boolean stopped = false;&lt;br /&gt;
  int count = 0;&lt;br /&gt;
  public void run() {&lt;br /&gt;
    while (!stopped) {&lt;br /&gt;
      try {&lt;br /&gt;
        sleep(1000);&lt;br /&gt;
      } catch (InterruptedException e) {&lt;br /&gt;
      }&lt;br /&gt;
      System.out.println(count++);&lt;br /&gt;
      ;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
public class MainClass {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    CounterThread thread = new CounterThread();&lt;br /&gt;
    thread.start();&lt;br /&gt;
    try {&lt;br /&gt;
      Thread.sleep(10000);&lt;br /&gt;
    } catch (InterruptedException e) {&lt;br /&gt;
    }&lt;br /&gt;
    thread.stopped = true;&lt;br /&gt;
    System.out.println(&amp;quot;exit&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;0&lt;br /&gt;
1&lt;br /&gt;
2&lt;br /&gt;
3&lt;br /&gt;
4&lt;br /&gt;
5&lt;br /&gt;
6&lt;br /&gt;
7&lt;br /&gt;
8&lt;br /&gt;
9&lt;br /&gt;
exit&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Stopping a Thread with interrupt() ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
class TryThread extends Thread {&lt;br /&gt;
  public TryThread(String firstName, String secondName, long delay) {&lt;br /&gt;
    this.firstName = firstName;&lt;br /&gt;
    this.secondName = secondName;&lt;br /&gt;
    aWhile = delay;&lt;br /&gt;
    setDaemon(true);&lt;br /&gt;
  }&lt;br /&gt;
  public void run() {&lt;br /&gt;
    try {&lt;br /&gt;
      while (true) {&lt;br /&gt;
        System.out.print(firstName);&lt;br /&gt;
        sleep(aWhile);&lt;br /&gt;
        System.out.print(secondName + &amp;quot;\n&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
    } catch (InterruptedException e) {&lt;br /&gt;
      System.out.println(firstName + secondName + e);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  private String firstName;&lt;br /&gt;
  private String secondName;&lt;br /&gt;
  private long aWhile;&lt;br /&gt;
}&lt;br /&gt;
public class MainClass {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    Thread first = new TryThread(&amp;quot;A &amp;quot;, &amp;quot;a &amp;quot;, 200L);&lt;br /&gt;
    Thread second = new TryThread(&amp;quot;B &amp;quot;, &amp;quot;b &amp;quot;, 300L);&lt;br /&gt;
    Thread third = new TryThread(&amp;quot;C &amp;quot;, &amp;quot;c &amp;quot;, 500L);&lt;br /&gt;
    first.start();&lt;br /&gt;
    second.start();&lt;br /&gt;
    third.start();&lt;br /&gt;
    try {&lt;br /&gt;
      Thread.sleep(3000);&lt;br /&gt;
      first.interrupt();&lt;br /&gt;
      second.interrupt();&lt;br /&gt;
      third.interrupt();&lt;br /&gt;
    } catch (Exception e) {&lt;br /&gt;
      System.out.println(e);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;A B C a &lt;br /&gt;
A b &lt;br /&gt;
B a &lt;br /&gt;
A c &lt;br /&gt;
C a &lt;br /&gt;
A b &lt;br /&gt;
B a &lt;br /&gt;
A b &lt;br /&gt;
B c &lt;br /&gt;
a &lt;br /&gt;
C A a &lt;br /&gt;
A b &lt;br /&gt;
B a &lt;br /&gt;
A c &lt;br /&gt;
C b &lt;br /&gt;
B a &lt;br /&gt;
A a &lt;br /&gt;
A b &lt;br /&gt;
B c &lt;br /&gt;
C a &lt;br /&gt;
A b &lt;br /&gt;
B a &lt;br /&gt;
A a &lt;br /&gt;
A b &lt;br /&gt;
B c &lt;br /&gt;
C a &lt;br /&gt;
A b &lt;br /&gt;
B a &lt;br /&gt;
A c &lt;br /&gt;
B b java.lang.InterruptedException: sleep interrupted&lt;br /&gt;
C A a java.lang.InterruptedException: sleep interrupted&lt;br /&gt;
C c java.lang.InterruptedException: sleep interrupted&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Suspend, resume, and stop a thread. ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
class MyThread implements Runnable {&lt;br /&gt;
  Thread thrd;&lt;br /&gt;
  boolean suspended;&lt;br /&gt;
  boolean stopped;&lt;br /&gt;
  MyThread(String name) {&lt;br /&gt;
    thrd = new Thread(this, name);&lt;br /&gt;
    suspended = false;&lt;br /&gt;
    stopped = false;&lt;br /&gt;
    thrd.start();&lt;br /&gt;
  }&lt;br /&gt;
  public void run() {&lt;br /&gt;
    try {&lt;br /&gt;
      for (int i = 1; i &amp;lt; 10; i++) {&lt;br /&gt;
        System.out.print(&amp;quot;.&amp;quot;);&lt;br /&gt;
        Thread.sleep(50);&lt;br /&gt;
        synchronized (this) {&lt;br /&gt;
          while (suspended)&lt;br /&gt;
            wait();&lt;br /&gt;
          if (stopped)&lt;br /&gt;
            break;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    } catch (InterruptedException exc) {&lt;br /&gt;
      System.out.println(thrd.getName() + &amp;quot; interrupted.&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    System.out.println(&amp;quot;\n&amp;quot; + thrd.getName() + &amp;quot; exiting.&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  synchronized void stop() {&lt;br /&gt;
    stopped = true;&lt;br /&gt;
    suspended = false;&lt;br /&gt;
    notify();&lt;br /&gt;
  }&lt;br /&gt;
  synchronized void suspend() {&lt;br /&gt;
    suspended = true;&lt;br /&gt;
  }&lt;br /&gt;
  synchronized void resume() {&lt;br /&gt;
    suspended = false;&lt;br /&gt;
    notify();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String args[]) throws Exception {&lt;br /&gt;
    MyThread mt = new MyThread(&amp;quot;MyThread&amp;quot;);&lt;br /&gt;
    Thread.sleep(100);&lt;br /&gt;
    mt.suspend();&lt;br /&gt;
    Thread.sleep(100);&lt;br /&gt;
    mt.resume();&lt;br /&gt;
    Thread.sleep(100);&lt;br /&gt;
    mt.suspend();&lt;br /&gt;
    Thread.sleep(100);&lt;br /&gt;
    mt.resume();&lt;br /&gt;
    Thread.sleep(100);&lt;br /&gt;
    mt.stop();&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  To determine whether a thread has been interrupted ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
class TryThread extends Thread {&lt;br /&gt;
  public TryThread(String firstName, String secondName, long delay) {&lt;br /&gt;
    this.firstName = firstName;&lt;br /&gt;
    this.secondName = secondName;&lt;br /&gt;
    aWhile = delay;&lt;br /&gt;
    setDaemon(true);&lt;br /&gt;
  }&lt;br /&gt;
  public void run() {&lt;br /&gt;
    try {&lt;br /&gt;
      while (true) {&lt;br /&gt;
        System.out.print(firstName);&lt;br /&gt;
        sleep(aWhile);&lt;br /&gt;
        System.out.print(secondName + &amp;quot;\n&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
    } catch (InterruptedException e) {&lt;br /&gt;
      System.out.println(firstName + secondName + e);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  private String firstName;&lt;br /&gt;
  private String secondName;&lt;br /&gt;
  private long aWhile;&lt;br /&gt;
}&lt;br /&gt;
public class MainClass {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    Thread first = new TryThread(&amp;quot;A &amp;quot;, &amp;quot;a &amp;quot;, 200L);&lt;br /&gt;
    Thread second = new TryThread(&amp;quot;B &amp;quot;, &amp;quot;b &amp;quot;, 300L);&lt;br /&gt;
    Thread third = new TryThread(&amp;quot;C &amp;quot;, &amp;quot;c &amp;quot;, 500L);&lt;br /&gt;
    first.start();&lt;br /&gt;
    second.start();&lt;br /&gt;
    third.start();&lt;br /&gt;
    try {&lt;br /&gt;
      Thread.sleep(3000);&lt;br /&gt;
    } catch (Exception e) {&lt;br /&gt;
      System.out.println(e);&lt;br /&gt;
    }&lt;br /&gt;
      first.interrupt();&lt;br /&gt;
      second.interrupt();&lt;br /&gt;
      third.interrupt();&lt;br /&gt;
    if (first.isInterrupted()) {&lt;br /&gt;
      System.out.println(&amp;quot;First thread has been interrupted.&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;A B C a &lt;br /&gt;
A b &lt;br /&gt;
B a &lt;br /&gt;
A c &lt;br /&gt;
C a &lt;br /&gt;
A b &lt;br /&gt;
B a &lt;br /&gt;
A b &lt;br /&gt;
B c &lt;br /&gt;
C a &lt;br /&gt;
A a &lt;br /&gt;
A b &lt;br /&gt;
B a &lt;br /&gt;
A c &lt;br /&gt;
C b &lt;br /&gt;
B a &lt;br /&gt;
A a &lt;br /&gt;
A b &lt;br /&gt;
B c &lt;br /&gt;
C a &lt;br /&gt;
A b &lt;br /&gt;
B a &lt;br /&gt;
A a &lt;br /&gt;
A b &lt;br /&gt;
B c &lt;br /&gt;
C a &lt;br /&gt;
A b &lt;br /&gt;
B a &lt;br /&gt;
A c &lt;br /&gt;
C C c java.lang.InterruptedException: sleep interrupted&lt;br /&gt;
First thread has been interrupted.&lt;br /&gt;
B b java.lang.InterruptedException: sleep interrupted&lt;br /&gt;
A a java.lang.InterruptedException: sleep interrupted&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>