java_exam 187

Ex14_fuctional - 함수형인터페이스(Functional Interface)

package com.kook.ch14Project; //국쌤(교재에 없는 예제-추가설명), 자바의정석(기초)-556p /* - 람다식을 사용하려면 @FunctionalInterface의 추상메서드에 매핑하는 람다식을 인터페이스 객체에 대입하여 사용 - 람다식 사용할시에는 람다식으로 구현한 추상메서드를 호출해야한다. */ public class Ex14_fuctional { public static void main(String[] args) { //익명의 객체를 생성하여 사용할시(기존의 자바 (구)방식) MyFunction f = new MyFunction() { @Override public int max(int a, int b) { return a > b ? a : b; } }; int res = ..

Ex14_anony

package com.kook.ch14Project; //국쌤(교재에 없는 예제-추가설명), 자바의정석(기초)-555p public class Ex14_anony { public static void main(String[] args) { //익명의 객체 obj를 생성 Object obj = new Object() { int max(int a, int b) { return a > b ? a : b; } }; /* obj.max(5,3); Object클래스에는 max메서드가 없어서 에러 람다식으로 익명 객체의 메서드를 구현하기 위해서는 아래 코드처럼 작성한다. 그러나, 람다식을 익명의 객체에 대입하려면 람다식만 대입해 주면 되나, (단, 익명의 객체는 추상메서드가 하나만 있는 인터페이스 객체여야 한다.) ..

Ex14RamdaWrite

package com.kook.ch14Project; //국쌤-(교재에 없는 예제-추가설명), java의정석 기초편 - 554p public class Ex14RamdaWrite { public static void main(String[] args) { /* - 람다식 작성예시 - 제일 쉽고 많이 쓰는 방법 (int a, int b) -> { return a > b ? a : b; } (int a, int b) -> a > b ? a : b - return없이 사용시에는 문장이 아닌 수식이므로 ;이 없음 {}안의 문장이 하나일시에는 { }생략이 가능하다. (단, return을 사용할시에는 생략이 불가능하다.) (a,b) -> a > b ? a : b - 파라미터의 데이터형은 생략가능(추론에선 데이터형 ..

Ex13_15 - wait()과 notify() - (2)

package com.kook.ch13Project; import java.util.*; public class Ex13_15 { public static void main(String[] args) throws Exception { Table table = new Table(); new Thread(new Cook(table), "COOK").start(); //"COOK"은 스레드명, Runnable객체를 한줄로 작성하여 생성 new Thread(new Customer(table, "donut"),"CUST1").start(); //작성시 배열에 있는 것을 써야한다. ex)"donut" new Thread(new Customer(table, "burger"),"CUST2").start(); //작성시..

Ex13Quiz

package com.kook.ch13Project; //1 public class Ex13Quiz extends Thread { //Thread는 Runnable인터페이스를 구현한 클래스로 java.lang에 있는 기본 클래스 //2 @Override public void run() { System.out.println("Ex13QuizClass클래스의 스레드"); } public static void main(String[] args) { //3 Ex13Quiz th1 = new Ex13Quiz(); //6 Thread th2 = new Thread(new RunThread()); //Ex13Quiz 명시적으로 작성된 생성자가 없으므로 기본 생성자를 사용 //public Ex13Quiz() { sup..

Ex13_13 - synchronized를 이용한 동기화(2)

package com.kook.ch13Project; //동기화를 사용한 처리 public class Ex13_13 { public static void main(String[] args) { Runnable r = new Runnable13(); //thread2개가 run메서드를 실행 Thread th1 = new Thread(r); Thread th2 = new Thread(r); th1.start(); th2.start(); } } class Runnable13 implements Runnable { Account2 acc = new Account2(); @Override public void run() { while(acc.getBalence() > 0) { int money = (int)(Ma..

Ex13_12 - synchronized를 이용한 동기화(1)

package com.kook.ch13Project; //국.변 //동기화 처리를 하지 않은 경우 public class Ex13_12 { public static void main(String[] args) { Runnable r = new Runnable12(); //thread2개가 run메서드를 실행 Thread th1 = new Thread(r); Thread th2 = new Thread(r); //new Thread(r).start(); ->이렇게 객체 생성도 가능 //new Thread(r).start(); th1.start(); th2.start(); } } class Runnable12 implements Runnable { Account acc = new Account(); @Over..

Ex13_11 - join()과 yield()

package com.kook.ch13Project; //국.변 public class Ex13_11 { public static void main(String[] args) { //Thread.yield()와 스레드객체.join() ThreadEx11_1 th1 = new ThreadEx11_1(); ThreadEx11_2 th2 = new ThreadEx11_2(); //th1과 th2스레드는 자신 스레드의 run()를 수행(Runnable을 거쳐서 실행됨) th1.start(); th2.start(); long startTime = System.currentTimeMillis(); try { /* - join()도 예외처리를 해줘야한다.(join을 걸어주면 예외가 발생하기 때문) - main스레드는..

Ex13_10 - suspend(), resume(), stop()

package com.kook.ch13Project; //국.변(여기있는 예제는 있다는 정도만 알것, 교재 저자와 국썜이 비사용을 권고하는 예제) public class Ex13_10 { @SuppressWarnings("removal") //"removal"이라는 경고를 띄우지 말라는 의미 public static void main(String[] args) { // deprecated된 suspend(),resume(),stop()메서드 RunImplEx10 r = new RunImplEx10(); Thread th1 = new Thread(r, "*"); /* - Thread(Runnable target, String name) - Runnable객체 r과 스레드명 name을 사용한 생성자 */ T..

Ex13_09 - interrupt

package com.kook.ch13Project; import javax.swing.JOptionPane; public class Ex13_09 { public static void main(String[] args) { // interrupt사용 ThreadEx9_1 th1 = new ThreadEx9_1(); th1.start(); //I/O block이 발생(진행중인 스레드가 대기상태가(일시정지) 된다.) String input = JOptionPane.showInputDialog("아무값이나 입력해라"); //입력처리가 종료되면 Runnable상태가 되고 cpu가 할당되면 run System.out.println("입력한 값은" + input + "이다."); th1.interrupt(); /..