Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- C/C++
- Node.js
- ror실행
- Cross
- scala
- Eclipse
- 명사 뽑아내기
- 주식이야기
- Lift
- 나의 프로젝트
- 스킨 스쿠버
- node.js web framework
- rss
- flex3
- 도커
- 나의 취미
- docker
- 명사 분석기
- ajax
- php thumbnail
- iBatis
- php
- 책이야기
- ejb
- express for node.js
- nodejs express
- 메일왕창보내는법
- 베트남어
- 명사 추출기
- 디즈니씨
Archives
- Today
- Total
nkdk의 세상
자바 Language 12일째 전체 본문
프로세스 단위로 실행시키다 보면 CPU에 IDLE타임이 발생하게 된다.
실행 단위를 쓰레드 단위로 수행을 시키려는 것을 만들때 사용한다.
쓰레드를 사용하면 쓰레드 스케줄러를 이용하여 데몬 프로그램이 작동한다.
runnable 인터페이스를 인플리 먼트해서 사용한다.
쓰레드를 사용하기 위해서 extends 예약어를 굳이 이곳에서 소비할 필요는 없다.
wait()
Runnable Not runnable
Thread -> run() -> Sleep(1000)
start() | <-
| (time out)
V motify()
DEAD motifyAll()
package Thread;
public class Mythread extends Thread { // 쓰레드를 상속 받는 방법을 사용하는 법 <-잘 안 쓰는 방법
public Mythread(String name) {
super(name);
}
public void run() {
for (int i = 0; i <= 100; i++) {
try {
Thread.sleep(100);
System.out.println(i + "=" + this.getName());
} catch (Exception ex) {
}
}
}
public static void main(String[] args) {
/*
* try{ Process p1=Runtime.getRuntime().exec("calc.exe"); // calc 와
* notepad 를 띄움 Process p2=Runtime.getRuntime().exec("notepad.exe");
* p1.waitFor(); // 자신을 종료하면 다른 프로세스는 비정상 종 p2.destroy(); // 자신만 종료함.
* System.out.println("p1:"+p1.exitValue()); // 정상적 종료인지 아닌지 알 수 있다.
* System.out.println("p2:"+p2.exitValue()); // 결과가 0 이면 정상 1이면 비정상 종료
* 된것임. }catch(Exception ex){}
*/
// Mythread my1=new Mythread(aa);
// Mythread my2=new Mythread(bb);
// my1.run(); my2.run();
Mythread my1 = new Mythread("one");
Mythread my2 = new Mythread("two");
my1.setPriority(MAX_PRIORITY); // 확률적으로 8 정도 올라감 0~10까지 이고 숫자가 높을수록 더 잘
// 나
my1.start(); // 쓰레드 시작
my2.start(); // 쓰레드 시
/*
* try { my1.join(); my2.join(); }catch(Exception e){ }
*/
System.out.println("안녕");
System.exit(0);
}
}
---
package Thread;
public class Mythread2 implements Runnable{
Thread tt;
public Mythread2() {
}
public void run() {
// Thread t=Thread.currentThread();
for(int i=1;i<=50;i++) {
// System.out.println(i+"="+t.getName());
System.out.println(i+"="+Thread.currentThread().getName());
try{
Thread.sleep(100);
Thread.yield();
}catch(Exception e){}
}
}
public Mythread2(String name) {
tt=new Thread(name);
tt.start();
}
public static void main(String[] args) {
/*
Mythread2 my1=new Mythread2();
Mythread2 my2=new Mythread2();
Thread t1=new Thread(my1,"one");
Thread t2=new Thread(my2,"two");
t1.start();
t2.start();
System.out.println("종료");
*/
new Mythread2("하나");
new Mythread2("둘");
}
}
---
package Thread;
import java.awt.*;
import java.awt.event.*;;
public class ThMondai3 extends Frame implements Runnable{
String str[]={"대한민국", "한국인","코리아","조선인","홍길동"};
Thread t;
Label lbl;
int sw2=0;
public ThMondai3() {
setSize(320,240);
setLocation(0,0);
setVisible(true);
addWindowListener(new Wevent());
addMouseListener(new Mevent());
t=new Thread (this);
t.start();
}
public void run() {
int x=0,y=0, swx=0, swy=0;//16:12 = 4;3
while(true) {
try{
Thread.sleep(300 );
}catch(Exception ex) {}
/* if (sw2 == 0 && x >=920) swx = 1;
if (sw2 == 0 && x <=0) swx = 0;
if (sw2 == 1 && y >=744) swy = 1;
if (sw2 == 1 && y <=0) swy = 0; */
if (sw2 == 0 && x>=920) x=0;
if (sw2 == 1 && y>=744) y=0;
if (sw2 == 0 && swx ==0) x+=80;
if (sw2 == 0 && swx ==1) x-=80;
if (sw2 == 1 && swy ==0) y+=60;
if (sw2 == 1 && swy ==1) y-=60;
setLocation(x,y);
}
}
class Wevent extends WindowAdapter{
public void windowClosing(WindowEvent e) {
System.exit(0);
}
}
class Mevent extends MouseAdapter{
public void mousePressed(MouseEvent e) {
if (sw2 == 0) sw2 = 1;
else if (sw2==1) sw2 = 0;
System.out.println(sw2);
}
}
public void paint(Graphics g) {
}
public static void main(String[] args) {
new ThMondai3();
}
}
---
package Thread;
import java.awt.*;
import java.awt.event.*;;
public class ThMondai1 extends Frame implements Runnable{
String str[]={"대한민국", "한국인","코리아","조선인","홍길동"};
Thread t;
Label lbl;
public ThMondai1() {
lbl=new Label("시간 표시",Label.CENTER);
this.add("Center",lbl);
setSize(500,500);
setLocation(0,0);
setVisible(true);
addWindowListener(new Wevent());
t=new Thread (this);
t.start();
}
public void run() {
int x=640,y=480, ssw=1;//16:12 = 4;3
while(true) {
try{
Thread.sleep(500);
}catch(Exception ex) {}
if(ssw==1 && x>=1280) {
ssw=2;
}
if (ssw==2 && x<=0) {
ssw=1;
}
if(ssw==1) {
x+=40; y+=30;} else {x-=40; y-=30;}
setSize(x, y);
}
}
class Wevent extends WindowAdapter{
public void windowClosing(WindowEvent e) {
System.exit(0);
}
}
public void paint(Graphics g) {
}
public static void main(String[] args) {
new ThMondai1();
}
}
---
package Thread;
import java.awt.*;
import java.awt.event.*;;
public class ThMondai2 extends Frame implements Runnable{
String str[]={"대한민국", "한국인","코리아","조선인","홍길동"};
Thread t;
Label lbl;
public ThMondai2() {
setSize(80,60);
setLocation(0,0);
setVisible(true);
addWindowListener(new Wevent());
t=new Thread (this);
t.start();
}
public void run() {
int x=0,y=0, sw1=1;//16:12 = 4;3
while(true) {
try{
Thread.sleep(200);
}catch(Exception ex) {}
if (sw1 == 1 && x >=1120) sw1 = 2;
if (sw1 == 2 && y >=904) sw1 = 3;
if (sw1 == 3 && x <=0) sw1 = 4;
if (sw1 == 4 && y <=0) sw1 = 1;
if (sw1 == 1) x+=80;
if (sw1 == 2) y+=60;
if (sw1 == 3) x-=80;
if (sw1 == 4) y-=60;
setLocation(x,y);
}
}
class Wevent extends WindowAdapter{
public void windowClosing(WindowEvent e) {
System.exit(0);
}
}
public void paint(Graphics g) {
}
public static void main(String[] args) {
new ThMondai2();
}
}
이 정도가 되겠네요. 오쯔까레 사마데시따~^^
실행 단위를 쓰레드 단위로 수행을 시키려는 것을 만들때 사용한다.
쓰레드를 사용하면 쓰레드 스케줄러를 이용하여 데몬 프로그램이 작동한다.
runnable 인터페이스를 인플리 먼트해서 사용한다.
쓰레드를 사용하기 위해서 extends 예약어를 굳이 이곳에서 소비할 필요는 없다.
wait()
Runnable Not runnable
Thread -> run() -> Sleep(1000)
start() | <-
| (time out)
V motify()
DEAD motifyAll()
package Thread;
public class Mythread extends Thread { // 쓰레드를 상속 받는 방법을 사용하는 법 <-잘 안 쓰는 방법
public Mythread(String name) {
super(name);
}
public void run() {
for (int i = 0; i <= 100; i++) {
try {
Thread.sleep(100);
System.out.println(i + "=" + this.getName());
} catch (Exception ex) {
}
}
}
public static void main(String[] args) {
/*
* try{ Process p1=Runtime.getRuntime().exec("calc.exe"); // calc 와
* notepad 를 띄움 Process p2=Runtime.getRuntime().exec("notepad.exe");
* p1.waitFor(); // 자신을 종료하면 다른 프로세스는 비정상 종 p2.destroy(); // 자신만 종료함.
* System.out.println("p1:"+p1.exitValue()); // 정상적 종료인지 아닌지 알 수 있다.
* System.out.println("p2:"+p2.exitValue()); // 결과가 0 이면 정상 1이면 비정상 종료
* 된것임. }catch(Exception ex){}
*/
// Mythread my1=new Mythread(aa);
// Mythread my2=new Mythread(bb);
// my1.run(); my2.run();
Mythread my1 = new Mythread("one");
Mythread my2 = new Mythread("two");
my1.setPriority(MAX_PRIORITY); // 확률적으로 8 정도 올라감 0~10까지 이고 숫자가 높을수록 더 잘
// 나
my1.start(); // 쓰레드 시작
my2.start(); // 쓰레드 시
/*
* try { my1.join(); my2.join(); }catch(Exception e){ }
*/
System.out.println("안녕");
System.exit(0);
}
}
---
package Thread;
public class Mythread2 implements Runnable{
Thread tt;
public Mythread2() {
}
public void run() {
// Thread t=Thread.currentThread();
for(int i=1;i<=50;i++) {
// System.out.println(i+"="+t.getName());
System.out.println(i+"="+Thread.currentThread().getName());
try{
Thread.sleep(100);
Thread.yield();
}catch(Exception e){}
}
}
public Mythread2(String name) {
tt=new Thread(name);
tt.start();
}
public static void main(String[] args) {
/*
Mythread2 my1=new Mythread2();
Mythread2 my2=new Mythread2();
Thread t1=new Thread(my1,"one");
Thread t2=new Thread(my2,"two");
t1.start();
t2.start();
System.out.println("종료");
*/
new Mythread2("하나");
new Mythread2("둘");
}
}
---
package Thread;
import java.awt.*;
import java.awt.event.*;;
public class ThMondai3 extends Frame implements Runnable{
String str[]={"대한민국", "한국인","코리아","조선인","홍길동"};
Thread t;
Label lbl;
int sw2=0;
public ThMondai3() {
setSize(320,240);
setLocation(0,0);
setVisible(true);
addWindowListener(new Wevent());
addMouseListener(new Mevent());
t=new Thread (this);
t.start();
}
public void run() {
int x=0,y=0, swx=0, swy=0;//16:12 = 4;3
while(true) {
try{
Thread.sleep(300 );
}catch(Exception ex) {}
/* if (sw2 == 0 && x >=920) swx = 1;
if (sw2 == 0 && x <=0) swx = 0;
if (sw2 == 1 && y >=744) swy = 1;
if (sw2 == 1 && y <=0) swy = 0; */
if (sw2 == 0 && x>=920) x=0;
if (sw2 == 1 && y>=744) y=0;
if (sw2 == 0 && swx ==0) x+=80;
if (sw2 == 0 && swx ==1) x-=80;
if (sw2 == 1 && swy ==0) y+=60;
if (sw2 == 1 && swy ==1) y-=60;
setLocation(x,y);
}
}
class Wevent extends WindowAdapter{
public void windowClosing(WindowEvent e) {
System.exit(0);
}
}
class Mevent extends MouseAdapter{
public void mousePressed(MouseEvent e) {
if (sw2 == 0) sw2 = 1;
else if (sw2==1) sw2 = 0;
System.out.println(sw2);
}
}
public void paint(Graphics g) {
}
public static void main(String[] args) {
new ThMondai3();
}
}
---
package Thread;
import java.awt.*;
import java.awt.event.*;;
public class ThMondai1 extends Frame implements Runnable{
String str[]={"대한민국", "한국인","코리아","조선인","홍길동"};
Thread t;
Label lbl;
public ThMondai1() {
lbl=new Label("시간 표시",Label.CENTER);
this.add("Center",lbl);
setSize(500,500);
setLocation(0,0);
setVisible(true);
addWindowListener(new Wevent());
t=new Thread (this);
t.start();
}
public void run() {
int x=640,y=480, ssw=1;//16:12 = 4;3
while(true) {
try{
Thread.sleep(500);
}catch(Exception ex) {}
if(ssw==1 && x>=1280) {
ssw=2;
}
if (ssw==2 && x<=0) {
ssw=1;
}
if(ssw==1) {
x+=40; y+=30;} else {x-=40; y-=30;}
setSize(x, y);
}
}
class Wevent extends WindowAdapter{
public void windowClosing(WindowEvent e) {
System.exit(0);
}
}
public void paint(Graphics g) {
}
public static void main(String[] args) {
new ThMondai1();
}
}
---
package Thread;
import java.awt.*;
import java.awt.event.*;;
public class ThMondai2 extends Frame implements Runnable{
String str[]={"대한민국", "한국인","코리아","조선인","홍길동"};
Thread t;
Label lbl;
public ThMondai2() {
setSize(80,60);
setLocation(0,0);
setVisible(true);
addWindowListener(new Wevent());
t=new Thread (this);
t.start();
}
public void run() {
int x=0,y=0, sw1=1;//16:12 = 4;3
while(true) {
try{
Thread.sleep(200);
}catch(Exception ex) {}
if (sw1 == 1 && x >=1120) sw1 = 2;
if (sw1 == 2 && y >=904) sw1 = 3;
if (sw1 == 3 && x <=0) sw1 = 4;
if (sw1 == 4 && y <=0) sw1 = 1;
if (sw1 == 1) x+=80;
if (sw1 == 2) y+=60;
if (sw1 == 3) x-=80;
if (sw1 == 4) y-=60;
setLocation(x,y);
}
}
class Wevent extends WindowAdapter{
public void windowClosing(WindowEvent e) {
System.exit(0);
}
}
public void paint(Graphics g) {
}
public static void main(String[] args) {
new ThMondai2();
}
}
이 정도가 되겠네요. 오쯔까레 사마데시따~^^