본문 바로가기

개발 개발/자바

[Java] synchronized 란? 출처 : http://interwater.tistory.com/13 Java 하며서 이론적으로 자주 마주 치는 놈이 이것인데.... 이건 간단히 말하면 db 락의 개념으로 보면 된다. synchronized 이게 붙어 있는 매쏘드는 그 매쏘드의 작업이 끝나기 전에 다른 놈이 사용을 못하게 하는 것이지.. 엇 자 그런데 만약에 synchronized 가 붙은 method 가 있는 클래스를 new 를 통해서 생성해서 각각 쓰면 이게 동기화가 될까? ---------------------------------- ex) class A{ synchronized test(){ } } class B{ new A().test(); new A().test(); } -------------------------------.. 더보기
[Thread] 자바 Thread의 interrupt 이해하기 출처 : http://javafreak.tistory.com/210 처음 자바를 배울때 가장 난해한 개념이 Thread의 인터럽트였던걸로 기억한다. "인터럽트를 건다"는 개념도 생소했거니와 그래서 어떤 영향을 미치는가? 를 도무지 알 길이 없었다. 왜냐하면 thread에 대한 이해도 일천했는데다가 자바 쓰레드에서 언급되는 "인터럽트"와 운영체제에서 배우던 인터럽트가 상호 교차되어 퓨전 떡볶이처럼 두리뭉실하게 머릿속에 자리잡았기 때문인 듯 하다. 운영체제를 배울때의 인터럽트를 간단하게 정리해보면 1. cpu가 무슨 일을 열심히하고 있는데 2. 어디선가 인터럽트 신호가 들어온다. 3. cpu는 현재 하고 있는 job을 대강 정리하고 상태를 보존해놓는다. 4. 인터럽트 신호를 따라가서 인터럽트 처리 루틴을 실.. 더보기
[Thread] 자바 쓰레드의 resume, suspend, stop 구현 출처 : http://javafreak.tistory.com/232 자바 언어가 1.x 에서 2.x 대를 넘나들 시절에 thread 를 다룰때 뻔질나게 자주 쓰였던 thread 메소드가 resume, suspend , stop 인데 아쉽게도 deprecated (앞으로 쓰지 말라는 뜻) 되어서 별 수 없이 쓰레드의 상태를 관리하는 방식으로 구현을 해야 한다. 구현은 아래와 같은 간단한 코드에서 시작한다. public class ThreadHandle implements Runnable { @Override public void run() { // TODO Auto-generated method stub } } Runnable을 구현한 것을 볼 수 있는데, 꼭 저렇게 할 필요는 없으나 Runnable을 i.. 더보기
java에서 타 프로그램 실행후 바로 종료 할려면.. But first I had to go through a buttload of pain using JNI, which I THOUGHT would be the best bet. Then I realized where the solution lies. The first app that uses this update utility I'm writing will be a program that presents a popup menu in the Windows system tray and allows you to open URLs and documents and launch programs from it. Well, the main app calls RUNDLL32.EXE, a Windows program th.. 더보기
Java 메모리와 관련하여 출처 : http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=1040201&docId=119242753&qb=bWF4TWVtb3J5KCk=&enc=utf8§ion=kin&rank=2&search_sort=0&spq=0&pid=gldVtv331y0sss1cZ9Rssv--259433&sid=TgQq-6koBE4AAChyBo4 메모리와 관련하여 1. 객체를 사용하고 나서 null 할당하는건 코드만 더럽히는 짓이다 vs 꼭꼭 null 처리해주는 좋은습관! 2. null 을 할당하는것은 별 의미없다 vs 이건 정말 중요하다 3. null 을 할당한다면 언제 할당해야 하느냐? 이런것들은 자바를 사용하는 개발자들 사이에서 오랫동안 논란이 되어왔고 아직도 논란이 되고 있는 부.. 더보기
[JAVA] 나쁜 코드 사례 원문 출처: http://www.odi.ch/prog/design/newbies.php#31 번역 출처: http://jnylove.tistory.com/192 # String concatenation - very bad code String s = ""; for (Person p : persons) { s += ", " + p.getName(); } s = s.substring(2); //remove first comma 이건 정말 멍청한 짓이다. loop 안에서 String의 concatenation을 반복하는 것은 쓰잘데기 없는 array copy와 garbage를 남발하는 것이다. 게다가, 마지막에 콤마를 제거하는 연산을 한 번 더 해줘야 한다. - better code StringBuilder .. 더보기
byte <-> ArrayList ArrayList -> Byte[] -> ArrayList 이걸 원하시죠? API로 바로 설명드립니다. ArrayList arrayList 는 있다고 가정.. Byte[] bytes = (Byte[]) arrayList.toArray(); // ArrayList -> Byte[] arrayList = new ArrayList(Arrays.asList(bytes )); // Byte[] -> ArrayList 만약 프리미티브 byte[]로 전환하고자 하신다면, Bytes[X].byteValue() 를 X값을 루프를 돌면서 복사해주면됩니다. 더보기
ThreadLocal 예제개발 이야기 출처 : http://0thinktank.tistory.com/entry/ThreadLocal-%EC%98%88%EC%A0%9C 특정 쓰레드의 스코프에서 사용할 로컬변수가 필요했던 적이 있는가? 이때에 각각의 쓰레드는 고유의 스토리지를 갖고 하나의 쓰레드는 다른 쓰레드의 상태 정보를 액세스하는 것이 불가능할 것이다. 표준 라이브러리는 이러한 요구를 가능케 하는 ThreadLocal 과 InheritableThreadLocal, 2개의 클래스들을 제공하고 있다. 클래스들이 사용되고 있는 예를 보자. import java.util.Random; public class ThreadLocal1 { // Define/create thread local variable static ThreadLocal thread.. 더보기