'JAVA/JSP/Source'에 해당되는 글 36건
- 2008.07.14 Thread
----- 쓰레드 (Thread) -----
- 프로세스내에서 순차적으로동작하는 문장들의 단일집합
- 하나의 프로세스는 다수개의 스레드를 정의할 수 있으며, 다수개의 스레드는
동시에 수행 될 수 있다.
-----두개의 쓰레드-----
class ThreadDouble
{
public static void main(String[] args)
{
/////객체 생성과 이름부여 /////
ThreadDoubleTest t1 = new ThreadDoubleTest("java basic");
ThreadDoubleTest t2 = new ThreadDoubleTest("java pro");
///// run메소드 호출 /////
t1.start();
t2.start();
}
}
---------------------------------------------
class ThreadDoubleTest extends Thread
{
public ThreadDoubleTest(String str)
{
super(str); //Thread생성장에 str을 인수로 준다.
}
public void run()
{
try
{
for(int i=0; i<10; i++)
{
Thread.sleep(2); // 2/1000초 동안 인터벌을 준다.
System.out.println(i+getName()); // 쓰레드의 이름을 출력
}
System.out.println("end !!"+getName());
}
catch(InterruptedException e)
{
}
}
}
----- Runnable Interface 사용 -----
class ThreadfromRunable
{
public static void main(String[] args)
{
ThreadRunable r = new ThreadRunable();
Thread t = new Thread(r); // 쓰레드객체안에 Runnable객체를 인수로 준다.
t.start();
//new Thread(new ThreadRunable()).start();
}
}
--------------------------------------------
class ThreadRunable implements Runnable
{
public void run()
{
try{
for(int i=0; i<10; i++)
{
Thread.sleep(200);
System.out.println("java Thread :"+i);
}
}catch(InterruptedException e)
{
}
}
}
----- setPriority(우선순위) -----
class ThreadPriority
{
public static void main(String[] args)
{
ThreadTest t1 = new ThreadTest("first Tread");
ThreadTest t2 = new ThreadTest("second Tread");
ThreadTest t3 = new ThreadTest("thrid Tread");
int pt1 = Integer.parseInt(args[0]);
int pt2 = Integer.parseInt(args[1]);
t1.setPriority(pt1); //실행 우선순위 값을 설정한다. 클수록 빠름
t2.setPriority(pt2);
t3.setPriority(Thread.MIN_PRIORITY); // 가장 낮은 우선순위로 설정
t1.start();
t2.start();
t3.start();
}
}
----------------------------------------------
class ThreadTest extends Thread
{
public ThreadTest(String str)
{
super(str);
}
public void run()
{
try{
for(int i=0; i<10; i++)
{
Thread.sleep(20);
System.out.println(i+getName()+"priority :"+getPriority());
}
System.out.println("end !!"+getName());
}catch(InterruptedException e)
{
}
}
}
-----Thread를 이용한 원 그리기와 현재 시간 출력 -----
import java.awt.*;
import java.util.*;
import java.text.*;
public class DrawThread extends java.applet.Applet implements Runnable
{
int x,y,hour,min,sec,year,month,day;
Random ran;
Dimension size;
Calendar cal;
DateFormat df;
String dateformat;
Thread t ;
public void init()
{
ran = new Random();
t= new Thread(this);
df = DateFormat.getDateInstance(); //DateFormat객체 생성
dateformat = df.format(new Date());
System.out.println(dateformat);
size = getSize();
t.start();
}
public void paint(Graphics g)
{
if(x != 0 || y !=0)
g.fillOval(x,y-10,10,10); // 채워진 원 그리기
g.drawString((year+"년"+month+1) "월"+day+"일"+
hour+"시"+min+"분"+sec+"초",50,290); // 현재 시간 출력
}
/*
public void update(Graphics g)
{
//g.clipRect(x,y,10,10);
paint(g);
}
*/
public void run()
{
while(true)
{
try{
Thread.sleep(100);
}
catch(InterruptedException e)
{
}
cal = Calendar.getInstance(); // 매 1/10초마다 시간과 랜덤 좌표 구해서
// paint()메소드 호출
x = ran.nextInt(size.width);
y = ran.nextInt(size.height);
year = cal.get(Calendar.YEAR);
month = cal.get(Calendar.MONTH);
day = cal.get(Calendar.DATE);
hour = cal.get(Calendar.HOUR);
min = cal.get(Calendar.MINUTE);
sec = cal.get(Calendar.SECOND);
repaint();
}
}
}
'JAVA/JSP > Source' 카테고리의 다른 글
Stream (0) | 2008.07.14 |
---|---|
Image (0) | 2008.07.14 |
Graphics(clipRect()) (0) | 2008.07.14 |
아날로그 시계(AWT) (0) | 2008.07.14 |
JCheckBox/ JRadioButton /JComboBox/ JTable (0) | 2008.07.14 |