싱글톤 쓰레드 클래스 구현에 사용할만한 패턴이 뭘까요?

jeongheumjo의 이미지

싱글톤, 간단한 쓰레드(쓰레드 1개 생성 및 실행) 각각을 클래스로 구현하는 것은 알겠는데요,
싱글톤이면서 간단한 쓰레드를 구현하려면 어떤 패턴을 쓰는게 좋을까요?
너무 간단해서 패턴을 쓰는것은 무리일까요?

지금 생각나는 것은 싱글톤 클래스가 쓰레드 클래스를 상속받아 쓰는 것
아니면 그냥 쓰레드 클래스를 싱글톤으로 만들 수도 있고요,.. 그러나 이 방법은 쓰레드 클래를 재활용하기 어려울 것 같고...

POSA 같은 책을 봐야 할지.. 너무 간단한거라 패턴 쓸 필요 없을까요?

winner의 이미지

제가 생각하기에 singleton을 쓰는 이유는 여러가지가 있겠지만 전 가능한 singleton을 쓰지 않는 형태가 좋다고 봅니다. 물론 필요하면 써야겠지만요.

jeongheumjo의 이미지

인스턴스가 두 개 이상 생길 가능성이 차단된다는 것 때문입니다.
너무 당연한 이유죠..
안쓰는게 낳을까요?
저는 싱글톤을 쓰다보니까 지금 생각중인 클래스들의 대부분이 싱글톤을 쓰게 될 것 같기도 하구요.. 너무 과용하는건가 싶기도 합니다.

emptynote의 이미지

가끔은 싱글턴 안하고 1회만 호출해야 한다는 주석만으로도 충분하다고 생각합니다.

생각외로 동료들은 똑똑하며 책임감이 있습니다.

싱글턴으로 안해도 싱글턴 처럼 사용해줄겁니다.

또 규칙을 모르거나 악의적인 동료는 간단한 정규식을 가지는 검색으로 찾아 낼수있습니다.

특정 클래스를 인스턴스화하는 파일 찾기 예제) find src -name "*.java" -exec grep -l "new[[:space:]+]원하는클래스" {} \;

싱글톤 오납용은 안좋지만

그래도 싱글톤? 사용해야 한다면 해야죠. 동료를 믿어야 한다 말아야 한다의 문제가 아니니깐요.

chadr의 이미지

적절하게 사용하시면 됩니다. 말씀하신 이유가 적절하다면 쓰시는것이 좋습니다.
하지만 과용은 금물이겠지요. 딱히 답은 없습니다. "적절히"라는 애매한 말로만
설명이 가능하네요.

하지만 싱글톤을 안쓰셔도 구현이 가능하고 업무의 요구사항을 충족한다면
그렇게 하시라고 권장해 드리고 싶습니다.

-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.

jeongheumjo의 이미지

인터넷 서핑의 즐거움... 입니다. ^^;
직접 코딩하기 전에 충분한 인터넷 서핑이 필요한 것 같아요... ㅎㅎ
며칠간 구현한 로깅 모듈이 있었는데 그것도 아래 사이트에 더 훌륭한 것이 포스팅 되어있네요. 물론 LGPL 이지만요..

http://yesarang.tistory.com/70

친절한 답변 항상 감사드립니다.

경력이 무려 7년인가(휴직기간 빼고)되는데 C++ 코딩 이제 처음 해봅니다 ^^;

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.