190508_Day21 복습
<스레드>
-
프로세스내에서 순차적으로 동작하는 문장들의 단일집합(메소드)
-
사용이유? 하나의 응용프로그램내에서 독립적으로 동시 실행(기다리지 않는) 하는 기능이 존재
-
구현방법) 클래스 Thread, 인터페이스 Runnable
class MyThread1 extends Thread { public void member() { Thread.start(); //혹은 start(); Thread내부니까 } public void run() //스레드 메소드 { //동시실행할 문장들 } } class Mythread2 implements Runnable { public void run() //스레드 메소드 { //동시실행할 문장들 } public void member() { Thread t = new Thread(this); t.start(); // new Thread(this).start(); } } -
호출방법) run()메소드를 직접 호출하는것이 아님!
-
start()메소드에게 위임해야 함! (thread 클래스 밑에 있음)
-
-
문제) 위의 두개의 run()메소드를 start()를 통해 호출하시오!
MyThread1 m1 = new MyThread1(); //스레드객체 MyThread2 m2 = new MyThread2(); //Runnable객체 m1.start(); //됨 m2.start(); //안됨-
스레드 객체를 별도로 반드시 생성!
-
Thread t = new Thread(Runnable객체의 위치);
-
Thread t = new Thread (m2);
-
t.start();
-
위의 코드를 줄여서 : new Thread(m2).start();
-
package j0508; class MyThread extends Thread{ public MyThread(String name) { super(name); // 이렇게 안하면 이름 출력되지 않는다. new Thread(String name); 을 호출한것 } //스레드 특징 메소드 ---> run : start()메소드를 통해 호출해야 동시 실행이 가능!! public void run() { try { for(int i=1; i<11; i++) { Thread.sleep(500);//0.5초 대기 System.out.println(getName()+" : "+ i); } } catch (InterruptedException e) { e.printStackTrace(); } }//run } public class ThreadTest2 { public static void main(String[] args) { //스레드의 기본이름 : Thread-0 Thread-1 Thread-2 //스레드에 이름 부여하기!! MyThread t1 = new MyThread("비키스레드"); MyThread t2 = new MyThread("진주스레드"); MyThread t3 = new MyThread("용진스레드"); //스레드 우선 순위 부여 (1~10) 10:가장 높고, 기본값은 5 t2.setPriority(Thread.MAX_PRIORITY); t3.setPriority(Thread.MIN_PRIORITY); t1.setPriority(Thread.NORM_PRIORITY); t1.start(); t2.start(); t3.start(); } }
-
-
TVContribution.java => 방송국(main)
-
Customer.java => 경쟁적인 모금자(스레드)
-
Account.java => 모금함(저금통)
-
-
java.net.*;
<InetAddress>
-
IP주소를 다루기 위한 클래스 XXX.XXX.XXX.XXX XXX: 0~255
주요메소드) byte[] getAddress() static InetAddress[] getAllByName(String host) static InetAddress getByName(String host) String getHostAddress() String getHostName() <URL> Uniform Resource Location
http://www.gildong.co.kr:80/test/hello.jsp?name=gildong&age=13&job=student#index1
프로토콜: 자원에 접근하기 위해 서버와 통신하는데 사용되는 통신규약(http) 호스트명: 자원을 제공하는 서버의 이름 www.gildong.co.kr 포트번호: 통신에 사용되는 서버의 포트번호 80 경로명: 접근하려는 자원이 저장된 서버상의 위치 /test/ 파일명: 접근하려는 자원의 이름 hello.jsp 쿼리(query): URL에서 '?'이후의 부분 name=gildong&age=13&job=student 참조(anchor): URL에서 #이후의 부분
<URLConnection>
-
어플리케이션과 URL간의 통신연결을 나타내는 클래스의 최상위 클래스
-
URLConnection을 사용해서 연결하고자 하는 자원에 접근하고 읽고 쓰기를 할 수 있다.
-
package j0508; import java.io.BufferedReader; import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.MalformedURLException; import java.net.URL; public class URLTest { public static void main(String[] args) { String total = null; try { URL url = new URL("https://www.naver.com/index.html"); System.out.println("프로토콜 : " + url.getProtocol()); System.out.println("호스트 : " + url.getHost()); System.out.println("서비스파일 : " + url.getFile()); InputStream is = url.openStream(); //웹소스 읽기 => 화면 콘솔 출력 BufferedReader br = new BufferedReader(new InputStreamReader(is, "UTF-8")); String str; while((str = br.readLine()) != null) { total += str; } FileWriter fw = new FileWriter("C:\\Users\\Playdata\\Documents\\test.html"); fw.write(total); fw.close(); //미션) 읽어드린 웹소스를 파일(test.html)로 저장하고 // 탐색기에서 'test.html'을 더블클릭해서 해당 사이트를 접속하시오 //파일 생성 => File //폴더(디렉토리) 생성=> } catch (MalformedURLException e) { System.out.println("잘못된 주소입니다. 다시 한번 확인 해주세요"); e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
이렇게 하면 깨지니
아래 처럼 해야 한다.
package com.encore.j0508; import java.io.BufferedReader; import java.io.FileOutputStream; import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.MalformedURLException; import java.net.URL; public class URLTest { public static void main(String[] args) { try { URL url = new URL("https://www.naver.com/index.html"); System.out.println("프로토콜: "+ url.getProtocol()); System.out.println("호스트: "+ url.getHost()); System.out.println("서비스파일명: "+ url.getFile()); InputStream is = url.openStream(); //웹소스 읽기 ----------> 화면 콘솔 출력 BufferedReader br = new BufferedReader(new InputStreamReader(is,"UTF-8") ); String str; // while( (str=br.readLine()) != null ) { // System.out.println(str); // } //미션) 읽어들인 웹소스를 파일(test.html)로 저장하고 // 탐색기에서 'test.html'을 더블클릭해서 해당 사이트를 접속하시오. //파일생성 ==> FileOutputStream, FileWriter //폴더(디렉토리)생성==> File //FileWriter fw = new FileWriter("test.html"); ---> 문자집합 설정X //new OutputStreamWriter(OuputStream out, String charsetName) FileOutputStream fos = new FileOutputStream("test.html"); OutputStreamWriter osw = new OutputStreamWriter(fos , "UTF-8"); while( (str=br.readLine()) != null ) { //fw.write(str); osw.write(str); } //fw.close(); osw.close(); System.out.println("파일(test.html)생성 성공!!"); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }//main }
'클라우드 기반 웹 개발자 과정 공부 > JAVA' 카테고리의 다른 글
190506_Day23 복습 , 채팅방 (0) | 2019.05.10 |
---|---|
190509_Day22 소켓 (0) | 2019.05.09 |
190507 복습, 스레드, 수정 필요 (0) | 2019.05.07 |
190503_Day19 복습, MVC다른방법, IO (0) | 2019.05.03 |
190502_Day18 MVC Model2 (0) | 2019.05.02 |