Java 학습-스레드:스레드의 시작 및 일시 중지를 버튼으로 제어
wait 및 notify
코드
package inheritance;
 
import java.awt.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.*;
public class ThreadPrintTest extends JFrame{
	boolean suspended=false;
	JTextArea jt=new JTextArea();	
	final JButton jb=new JButton("  ");
	final JButton jb2=new JButton("  ");
	Thread thread1=null;
		
	public ThreadPrintTest() {
		super();
		Container c=getContentPane();
		setLayout(new FlowLayout(2,10,10));
		jt.setSize(100,100);
		jt.setLineWrap(true);
		c.add(jt);
		c.add(jb);
		c.add(jb2);
		
		jb.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {				
				if(thread1==null) {
					thread1=new Thread(new MyThread());
					thread1.start();
				}
				else {					
					synchronized(thread1) {               
						thread1.notify();                   
	                }
					suspended = false;					
				}
				
			}
		});
		jb2.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {				
				suspended = true;			
			}
		});		
	}
	public static void main(String [] args) {
		init(new ThreadPrintTest(),300,200);
	}
	public static void init(JFrame frame,int width,int height) {
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setSize(width, height);
		frame.setVisible(true);
	}
	
	private final class MyThread implements Runnable{
		
		public void run() {
			while(true) {
				jt.append("  !");
				synchronized (thread1) {
					try {
							Thread.sleep(1000);
							if(suspended) {
								thread1.wait();
							}
					}catch(InterruptedException e) {
						System.out.println("       ");
						break;
					}	
				}	
			}
		}	
	}
}
                이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.