<생성방법>
1. Thead 클래스의 상속
Class ThreadClass extends Thread {
public void run(){
System.out.println("쓰레드가 실행되었습니다");
}
}
Class ThreadTest {
public static void main(String[] args){
ThreadClass threadClass = new ThreadClass();
threadClass.start();
//start하면 쓰레드에게 cpu가 할당되었을때 run()이 실행된다
}
}
2. Runnable 인터페이스 구현
Class RunnableClass implements Runnable {
public void run(){
System.out.println("쓰레드가 실행되었습니다");
}
}
Class ThreadTest {
public static void main(String[] args){
Runnable runnableClass = new RunnableClass();
Thread thread = new Thread(runnableClass);
thread.start();
}
}
* 상속을 이용한 Thread 클래스는 다른 클래스를 상속할 수 없지만(이미 쓰레드를 상속하고있기 때문에, 인터페이스를 구현한 Runnable 클래스는 다른 클래스를 상속할 수 있다.
<생성자>
1. Thread()
2. Thread(String s)
3. Thread(Runnable r)
4. Thread(Runnable r, String s)
s : 쓰레드 이름
r : Runnable Interface를 구현한 Class
<메소드>
1. static void sleep(long msec) :
msec에 지정된 밀리초 동안 대기
2. static void sleep(long msec, int nsec) :
msec에 지정된 밀리초 + nsec에 지정된 나노초 동안 대기
3. String getName() :
스레드의 이름을 반환
4. void setName(String s) :
스레드의 이름을 s로 설정
5. void start() :
스레드를 시작시킨다. run() 메소드를 호출
6. final int getPriority() :
스레드의 우선순위를 반환
7. final void setPriority(int p) :
스레드의 우선순위를 p 값으로 설정
8. boolean isAlive() :
스레드가 실행 가능 상태, 실행상태, 대기상태에 있으면 true를 그렇지 않으면 false를 반환
9. void join() throws InterruptedException :
스레드가 끝날 때까지 대기
10. void run() :
스레드가 실행할 부분을 기술하는 메소드, 하위 클래스에서 오버라이딩 되어야 한다.
11. void suspend() :
스레드가 일시 정지된다. resume()에 의해 다시 시작될 수 있다.
12. void resume() :
일시 정지된 스레드를 다시 시작시킨다.
<생명 주기>
1. 쓰레드 객체가 생성되면 쓰레드는 메모리에 올라간다.
2. start() 메소드가 호출되면 실행가능 상태가 된다.(cpu 할당대기)
3. cpu가 할당되면 run() 메소드를 실행하며 실행상태가 된다.
4. cpu할당 시간이 종료되거나, yield() 함수가 실행되면 다시 실행가능 상태로 변한다.
5. sleep(), join(), 입출력 등을 요구하게되면 쓰레드는 대기상태로 전환되고, sleep time이 말료되거나, join() 할 쓰레드가 종료, 입출력 종료, notify(), notifyAll() 메소드가 호출되었을시에 실행가능 상태로 전환한다.
6. 해당 쓰레드의 코드가 모두 실행되었을 경우에는 종료된다.
개의 문자들로 이루어진 문자열이 있고,
은 a의 개수,
는 b의 개수, ... ,
은 z의 개수라고 하자.
이고 두 번째 문자도 a일 확률은
이다.
이다.
이다.
로 나타낸다. 프리드만 자신은 κ로 표기했었고, 그런 이유로 Kappa 테스트라고 부르기도 한다.
을, b는 확률
를,
, z는 확률
을 가지고 있다.
이므로 두 문자 모두 a일 확률은
이다.
이다.
이다.
과 같으므로
,
,
들은 모두 세어보면
이고 값이 적절히 크다면,
은
과 근사하다고 볼 수 있다.
값은 커지고, 문자들의 빈도를
을 키 단어 길이라고 하자. 간단하게 하기 위해 키 단어는 중복되지 않는 문자들로 되어 있다고 한다.
개의 열로 배열하여 놓는다. 그러면 1,
,
,
번째 문자들이 ?첫번째 열에 오게 되고 이 문자들은 모두 같은 키 단어 문자로 암호화된 것이다.





















이다. 그러나 키 단어를 아주 긴 문장, 예를 들어 어떤 책에 있는 문장으로 했다면 이 값은 약간 커질 것이다.)
이다. 그리고 두 문자를 선택하는 순서는 무시해야 하므로 ?같은 열에서 같은 문자 쌍을 선택하는 경우의 수는
이다.
가지이다. 그러므로 서로 다른 열에서 같은 문자를 선택하는 경우의 수는 모두
이 된다.
에 관하여 다시 정리하면
는 자동으로 계산된다! 그리고 신기한 것은 아주 적은 문자수를 가진 문서에서도 값은 거의 정확하게 알아낼 수 있다는 점이다.
이므로
은