<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=Java%2F%EC%8A%A4%EB%A0%88%EB%93%9C%EC%9E%AC%EC%82%AC%EC%9A%A9</id>
	<title>Java/스레드재사용 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=Java%2F%EC%8A%A4%EB%A0%88%EB%93%9C%EC%9E%AC%EC%82%AC%EC%9A%A9"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=Java/%EC%8A%A4%EB%A0%88%EB%93%9C%EC%9E%AC%EC%82%AC%EC%9A%A9&amp;action=history"/>
	<updated>2026-05-14T20:24:02Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=Java/%EC%8A%A4%EB%A0%88%EB%93%9C%EC%9E%AC%EC%82%AC%EC%9A%A9&amp;diff=33285&amp;oldid=prev</id>
		<title>imported&gt;Unknown at 05:23, 7 February 2021</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=Java/%EC%8A%A4%EB%A0%88%EB%93%9C%EC%9E%AC%EC%82%AC%EC%9A%A9&amp;diff=33285&amp;oldid=prev"/>
		<updated>2021-02-07T05:23:33Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;아래 코드에 문제가 있는것 같아요. 분명 두개의 메소드가 같아보이는데 (주석처리된 run() 메소드와 run() 메소드) 한개만 되고 나머지 한개는 에러가 납니다(unreachable statement) - 임인택&lt;br /&gt;
----&lt;br /&gt;
waitfortarget() 콜하기 전에 중괄호가 두개 있고 하나 있는 차이인것 같은디?? 음.. 지금 주석처리 안한 run에서 에러가 나는거야?&lt;br /&gt;
만약 그러면.. 무한루프때메.. wait..어쩌구 함수에 도달 못해서.. &amp;#039;도달할수없는 문장&amp;#039; 이라는 에러가 나는것이 아닐까..??? (._.);&lt;br /&gt;
주석처리한것에서 나면.. 음.. 잘 모르겄넹.. ㅋㅋ;&lt;br /&gt;
-해성&lt;br /&gt;
=== 소스코드 ===&lt;br /&gt;
 &lt;br /&gt;
 import java.util.*;&lt;br /&gt;
 &lt;br /&gt;
 public class ReThread implements Runnable {&lt;br /&gt;
 	&lt;br /&gt;
 	protected Runnable target;&lt;br /&gt;
 	private static Vector threads = new Vector();&lt;br /&gt;
 	private ReThread reThread;&lt;br /&gt;
 	private Thread thread;&lt;br /&gt;
 	private static int id=0;&lt;br /&gt;
 	private static synchronized int getID() { return id++;}&lt;br /&gt;
 	&lt;br /&gt;
 	public ReThread(Runnable target) {&lt;br /&gt;
 		this.target = target;&lt;br /&gt;
 	}&lt;br /&gt;
 	&lt;br /&gt;
 	public synchronized void start() {&lt;br /&gt;
 		if((thread==null) &amp;amp;amp;&amp;amp;amp; (reThread==null)) {&lt;br /&gt;
 			synchronized(threads) {&lt;br /&gt;
 				if(threads.isEmpty()) {&lt;br /&gt;
 					thread = new Thread(this, &amp;quot;ReThread-&amp;quot; + getID());&lt;br /&gt;
 					thread.start();&lt;br /&gt;
 				}&lt;br /&gt;
 				else {&lt;br /&gt;
 					reThread = (ReThread)threads.lastElement();&lt;br /&gt;
 					threads.setSize(threads.size()-1);&lt;br /&gt;
 					reThread.start0(this);&lt;br /&gt;
 				}&lt;br /&gt;
 			}&lt;br /&gt;
 		}		&lt;br /&gt;
 	}&lt;br /&gt;
 	&lt;br /&gt;
 	protected synchronized void start0(ReThread reThread) {&lt;br /&gt;
 		this.reThread = reThread;&lt;br /&gt;
 		target = reThread.target;&lt;br /&gt;
 		notify();&lt;br /&gt;
 	}&lt;br /&gt;
 	&lt;br /&gt;
 	public synchronized void interrupt () {&lt;br /&gt;
 		if ((target != null) &amp;amp;amp;&amp;amp;amp; ((thread != null) ^ (reThread != null))) {&lt;br /&gt;
 			if (thread != null) {&lt;br /&gt;
 				thread.interrupt ();&lt;br /&gt;
 			} else {&lt;br /&gt;
 				reThread.interrupt0 (this);&lt;br /&gt;
 			}&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 	&lt;br /&gt;
 	protected synchronized void interrupt0(ReThread reThread) {&lt;br /&gt;
 		if((target!=null) &amp;amp;amp;&amp;amp;amp; ((reThread==this.reThread))) {&lt;br /&gt;
 			thread.interrupt();&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 	&lt;br /&gt;
 	public void run() {&lt;br /&gt;
 		while(true) {&lt;br /&gt;
 			try {&lt;br /&gt;
 				target.run();&lt;br /&gt;
 			} catch(RuntimeException ex) {&lt;br /&gt;
 				ex.printStackTrace();&lt;br /&gt;
 			}&lt;br /&gt;
 		}&lt;br /&gt;
 		waitForTarget();&lt;br /&gt;
 	}&lt;br /&gt;
 	/*public void run () {&lt;br /&gt;
     while (true) {&lt;br /&gt;
       try {&lt;br /&gt;
         target.run ();&lt;br /&gt;
       } catch (RuntimeException ex) {&lt;br /&gt;
         ex.printStackTrace ();&lt;br /&gt;
       }&lt;br /&gt;
       waitForTarget ();&lt;br /&gt;
     }&lt;br /&gt;
   }*/&lt;br /&gt;
 	&lt;br /&gt;
 	protected synchronized void waitForTarget() {&lt;br /&gt;
 		target=null;&lt;br /&gt;
 		threads.addElement(this);&lt;br /&gt;
 		while(target==null) {&lt;br /&gt;
 			try {&lt;br /&gt;
 				wait();&lt;br /&gt;
 			} catch(InterruptedException ignored) {			}&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
----&lt;br /&gt;
[[Java]]&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>imported&gt;Unknown</name></author>
	</entry>
</feed>