(오후)
1. 디버깅연습
-----------------------------------------------------------------------------------------------------------------------------------------------------
디버그 모양 누르고, 더블 클릭한 후에 F8번 누르기
F5,6,7이거 누르면서 잘 안함
브레이크포인트 지점 다 지우고 자바모드로 돌아가기 ...졸려................=.=
-----------------------------------------------------------------------------------------------------------------------------------------------------
2. 스레드 <개념과 만드는 방법, 트랜잭션 처리방법>
: 멀티스레드 2권 12장
다중의 흐름, 여러개의 프로세스(같은 프로그램), 멀티태스킹과 다름(아예 프로그램이 다른것)
cpu의 시간을 나눠쓰는것 - timesharing(시분할) 빨라서 동시에 사용하는것 처럼 느낌
-----------------------------------------------------------------------------------------------------------------------------------------------------
싱글스레드>>
package thread;
public class ThreadTest1 {
public static void main(String[] args) {
run();
// 일반적인 싱글스레드
for (int i = 1; i < 5; i++) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("main : " + i);
}
System.out.println("main 종료");
}
private static void run() {
for (int i = 1; i < 5; i++) {
try {
Thread.sleep(1000); //예외처리 필요
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("run : " + i);
}
System.out.println("run 종료");
}
}
멀티스레드>>
package thread;
public class ThreadTest1 extends Thread {
public static void main(String[] args) {
ThreadTest1 t = new ThreadTest1();
t.start();
//멀티스레드
for (int i = 1; i < 5; i++) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("main : " + i);
}
System.out.println("main 종료");
}
//run메소드오버라이딩
public void run() {
for (int i = 1; i < 5; i++) {
try {
Thread.sleep(1000); // 예외처리 필요
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("run : " + i);
}
System.out.println("run 종료");
}
}
main()은 계속 하고 있고 start()는 run() 호출하기로 약속! -> Thread에 있는 run( )을 오버라이딩하기위함
**순서가 일정하지 않음
implements Runnable >> 무조건 run()구현, 추상메소드라서 //인터페이스
package thread;
public class ThreadTest2 implements Runnable {
public static void main(String[] args) {
ThreadTest2 t = new ThreadTest2();
Thread nt = new Thread(t); //업캐스팅, 상속을 안받고 구현됨
nt.start();
//멀티스레드
for (int i = 1; i < 5; i++) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("main : " + i);
}
System.out.println("main 종료");
}
//run메소드오버라이딩
public void run() {
for (int i = 1; i < 5; i++) {
try {
Thread.sleep(1000); // 예외처리 필요
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("run : " + i);
}
System.out.println("run 종료");
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------
3. 기본 API클래스 필요한것만
String
문자열은 원본 조작을 하지 않음 replace할 경우 다시 저장을 해야만 한다.
== 과 .equals 차이
이유 : 문자열은 길이가 쉽게 변함..
메모리누수
package api;
public class ApiTest3 {
public static void main(String[] args) {
String str = "0123456789";
String words = "";
for (int i = 1; i < 100; i++) {
words += str;
}
System.out.println(words);
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------
내일 ->api, jdbc
'학부 정리 > Java' 카테고리의 다른 글
18.01.12 자바 - 필기02 미완성 (0) | 2018.01.12 |
---|---|
18.01.12 자바 - 필기01 미완성 (0) | 2018.01.12 |
18.01.11 자바 - 필기01 미완성 (0) | 2018.01.11 |
18.01.10 자바 - 필기02 (0) | 2018.01.10 |
18.01.10 자바 - 필기01 (0) | 2018.01.10 |