Skip to content
DarkKaiser의 블로그
DarkKaiser의 블로그
  • 개발 관련 자료(노션)
  • Raspberry Pi(노션)
  • WD My Cloud(노션)
  • GitHub
DarkKaiser의 블로그

[카테고리:] Java

synchronized 키워드와 ReentrantLock 클래스에 대해

DarkKaiser, 2010년 5월 5일2023년 9월 5일

출처 : http://mindwing.kr/103

synchronized 키워드 대신 java.util.concurrent.ReentrantLock 을 쓰면 다음의 잇점들이 생깁니다.

  • lock 을 얻으려는 스레드를 interrupt 시킬 수 있다.
  • lock 을 얻는데 대한 timeout 을 설정할 수 있다.
  • lock 에 2개 이상의 condition 을 설정해서 쓸 수 있다.
  • synchronized 키워드를 위해 JVM 이 사용하는 lock 기능은 하드웨어의 lock 메커니즘과
Continue Reading

wait(), notify(), notifyall()

DarkKaiser, 2010년 5월 5일2023년 9월 5일

wait과 notifyall(notify) 메서드는 동기화 처리를 해서, 한 순간에 하나의 쓰레드만 호출이 가능하도록 한다.

 
wait과 notifyAll(notify)이 서로 다른 두 쓰레드에 의해서 동시에 각각 호출되는 것 조차 허용되지 않아야 함을 뜻하는 것이다. 위의 두 메서드는 동시에 호출되면 문제가 생길 수 있는 민감한 성격의 메서드이다. 따라서 동기화 블럭 또는 도익화 메서드를 이용해서 메서드
Continue Reading

Local(지역) 클래스 & Anonymous(익명) 클래스

DarkKaiser, 2010년 5월 3일2023년 9월 6일
- Local 클래스
interface Readable
{
  public void read();
}
class OuterClass
{
  public Readable createLocalClassInst()
  {
    class LocalClass implements Readable
    {
      public void read()
      {
        System.out.println("Outer inst name : " + myName);
      }
    }
    return new LocalClass();
  }
}
- Anonymous 클래스
interface Readable
{
  public void read();
}
Continue Reading

YourKit 자바 프로파일러

DarkKaiser, 2010년 3월 19일2023년 9월 5일

홈페이지 : http://www.yourkit.com/java/profiler/

Continue Reading

Vector, ArrayList, LinkedList 의 차이점

DarkKaiser, 2009년 8월 22일2023년 9월 5일

– Vector : 구버전 호환용. 그다지 사용되지 않음. 동기화 처리가 내부적으로 일어남으로 다른 객체보다 무거움

– ArrayList : 배열의 복사에 의한 데이터 저장처리를 내부적으로 행하며, 각 데이터에 대한 인덱스를 가지고 있기 때문에 검색이 매우 빠르다. 다만 많은 데이터의 추가/삭제시에는 배열의 복사가 빈번하게 일어나, 성능이 떨어지는 단점이 있다. 동기화된 ArrayList를 사용하기

Continue Reading

String, StringBuffer, StringBuilder 차이점

DarkKaiser, 2009년 8월 22일2023년 9월 5일

자바에서 문자열을 사용할때 도움을 주는 연산자 들은 많다. 하지만 흔히 권하는 방법은 String과 StringBuffer 그리고 StringBuilder 클래스들이다. 사용할 땐 다음을 고려해주면 된다.



  • String은 한번 선언하면 변하지 않기 때문에, 사용하려는 문자열이 변하지 않을때 사용하도록 한다.

  • StringBuffer는 동기화방식으로 저장되기 때문에, 멀티 쓰레드(multi Thread) 환경하에서 문자열 변경시에 사용하도록 한다.

  • StringBuilder는 비동기화방식으로 저장되기 때문에,

Continue Reading

배포버젼 .jar 만들기

DarkKaiser, 2009년 5월 17일2023년 9월 6일

출처 : http://blog.naver.com/an5asis/60023239426

jar 파일의 배포버젼 만들기


작성자 : 이 상 문
작성일 : 2002. 1. 9


여러 개의 class 파일로 이뤄진 프로그램을 jar 형식의 파일로 합쳐서 배포할 수 있다. 하나의 파일로 관리할 수 있다는 장점뿐만 아니라, 압축이 되어서 용량도 더 작게 만들 수 있는 장점이 있다. 그리고, 다음에 설명할

Continue Reading

Runtime 클래스를 이용한 외부 프로그램 호출

DarkKaiser, 2009년 2월 8일2023년 9월 6일

출처 : http://www.yunsobi.com/blog/411

java.lang 패키지의 Runtime 클래스는 자바에서 외부 프로세스를 생성하는 방법을 제공한다.
예를 들어 자바를 이용하여 MS 윈도우에서 MS 엑셀을 실행하는것등에 이 Runtime클래스를 이용할 수 있다.

예를 들어 C:\Program Files\Microsoft Office\Office\excel.exe 위치에 있는 excel.exe를 실행하는 코드는 아래와 같다.

try {
   Runtime run = Runtime.getRuntime ();
   run.exec ( "C:\\Program 
Continue Reading

static initializer

DarkKaiser, 2009년 2월 7일2023년 9월 6일

출처 : http://blog.naver.com/parnx/140054010993

다음은 흔히 싱글턴singleton 패턴에서 애용되는 형태의 코드이다.


public class MySingleton {
   private static final MySingleton INSTANCE = new MySingleton();

   public static MySingleton getInstance() {
       return INSTANCE;
   }

   private MySingleton() {
      // 초기화 작업…
   }

   // …
Continue Reading

자바에서 조건부 컴파일 흉내내기

DarkKaiser, 2008년 4월 3일2023년 9월 6일

자바에서 C++의 조건부 컴파일 흉내를 내려면 아래와 같이 할 수 있다.

public class test {
 static final boolean DEBUG = false;
 
 public static void main(String[] args) {
  System.out.println("######## 1");
  if (DEBUG) {
   System.out.println("######## 2");
  }
   
  System.out.println("######## 3");
 }
}

자바에서 위의 코드를 컴파일하고 나서 생성되는 .class 파일을 디컴파일 해서 보면

Continue Reading
  • Previous
  • 1
  • 2
  • 3
  • Next

최신 글

  • AssertJ 소개testCompile ‘org.assertj:assertj-core:3.6.2’ 2017년 9월 14일
  • 자주 사용되는 Lombok 어노테이션 2017년 9월 14일
  • 유니코드 #3 2017년 9월 14일
  • 유니코드 #2 2017년 9월 14일
  • 유니코드 #1 2017년 9월 14일

최신 댓글

    카테고리

    • 개인 자료 (1)
      • 일기 (1)
    • 주절주절 (7)
    • 프로그래밍 갤러리 (16)
    • 프로그래밍 언어 (186)
      • Java (29)
      • C/C++/VC++ (114)
      • C# (11)
      • Visual Basic (6)
      • 안드로이드 (9)
      • Objective-C (5)
      • JavaScript (4)
      • JSP/Servlet (2)
      • Python (4)
      • 어셈블러 (1)
    • 개발++ (44)
      • Book (11)
        • Joel On Software (10)
      • 프로젝트 관리 (6)
      • Maven (1)
      • 디버깅 (1)
      • DirectX (1)
      • Silverlight (1)
      • RESTful (1)
      • Hacking (1)
      • WDM (4)
      • VoIP (5)
      • 기타 (1)
    • 개발 도구 (15)
      • eclipse (14)
      • Sublime Text (1)
    • 네트워크 (7)
    • 설치 및 배포 (7)
      • InstallShield (2)
      • NSIS (4)
    • 버전 관리 (9)
      • Git (2)
      • CVS (2)
      • Subversion (5)
    • 데이터베이스 (7)
      • Oracle (3)
      • Sybase (2)
      • MS-SQL (2)
    • 단위테스트 (3)
      • JUnit (1)
      • NUnit (2)
    • 버그추적시스템 (2)
      • mantis (2)
    • 운영체제 (7)
      • Windows (5)
      • 리눅스 (2)
    • WAS (3)
      • WebLogic (3)
    • 디자인패턴 (1)
    • 디지털 이미지 프로세싱 (16)

    태그

    Abstract ActiveX AfxParseURL Automation boost devenv.exe event EventLogTraceListener Hover interface IO iTextSharp JAD jar JavaScript Joel Leave MFC Monitor msdev.com MSDN mutable PDF Properties RAW Saturation SHGetFolderPath SHGetKnownFolderPath SQLite STLTask String TextWriterTraceListener URL VI 권한 데이터소스 디컴파일러 문자열 스레드 동기화 스레드 생성 실용주의 프로그래머 자동화 테스팅 파일포맷 프리컴파일

    메타

    • 로그인
    • 엔트리 피드
    • 댓글 피드
    • WordPress.org
    ©2025 DarkKaiser의 블로그 | WordPress Theme by SuperbThemes