[Java] 병렬 프로그래밍 - 스레드 안전성 02. 스레드 안전성 - 병렬 프로그램이 단순하게 스레드와 락(lock)만 신경 써서 될 일이 아니다. 스레드와 락은 그저 목적을 위한 도구일 뿐. 스레드에 안전한 코드를 작성하는 것은 근본적으로 상태, 특히 "공유되고 변경할 수 있는 상태에 대한 접근을 관리" 하는 것이다. 객체의 상태는 인스턴스나 static 변수 같은 상태 변수에 저장된 객체의 데이터이다. 객체의 상태에는 다른 객체의 필드에 대한 의존성이 포함될 수도 있다. - 공유됐다는 것은 여러 스레드가 특정 변수에 접근 할 수 있다는 뜻이고, 변경할 수 있다(mutable)는 것은 해당 변수 값이 변경될 수 있다는 뜻. 스레드 안전성이라는 것은 실제로는 데이터에 제어 없이 동시접근하는 걸 막는다는 의미이다. - 객체가 스레드에 안전해야 하느냐.. 2012. 6. 19. [Java] 병렬 프로그래밍 개요. 01. 개요. - 스레드는 멀티프로세서 시스템의 능력을 최대한 끌어낼 수 있는 가장 쉬운 방법이며, 프로세서 개수가 늘어날수록 여러 작업을 동시에 실행하는 일이 더욱 중요하다. 1.1 작업을 동시에 실행하는 일에 대한 (아주) 간략한 역사. - 프로세스는 각자가 서로 격리된 채로 독립적으로 실행되는 프로그램으로서 운영체제는 프로세스마다 메모리, 파일 핸들, 보안 권한 등의 자원을 할당한다. 프로세스끼리는 서로 통신을 할 수도 있는데, 소켓, 시그널 핸들러, 공유 메모리, 세마포어, 파일 등의 비교적 큰 단위의 다양한 통신 수단이 제공된다. 프로세스간 메세지 전송 시 또는 공유메모리를 통해 특정 memory (data) 를 공유할 경우, 메모리 동시접근 문제가 생김. 한번에 하나의 프로세스만 접근 가능하도.. 2012. 6. 19. [Android/안드로이드] Test 는 원숭이에게 맡기자!! Monkey Test. 몽키 테스트 (Monkey Test) 1) 몽키 테스트란? Monkey는 Android SDK에서 제공하는 프로그램으로, emulator나 device에 대해 random한 event stream을 발생시킵니다. 마치 원숭이가 기기를 작동하는 것처럼 random event를 발생시키기 때문에 monkey라는 이름이 붙여졌습니다. Event는 click, touch, gesture, system level event 등이 있습니다. 2) 몽키 테스트의 목적. Smart phone을 사용함에 있어, 인간은 선행 학습에 의해 device와 상호작용을 합니다. 따라서 극단적인 사용이나 Edge case 들에 대해 Error 가 발생하는지를 확인하기가 어렵습니다. Ex) Android phone에 OK 버튼을 포.. 2012. 6. 19. [Android/안드로이드] Drawable 에 대한 모든 것. http://developer.android.com/guide/topics/resources/drawable-resource.html Bitmap Drawable * .png, .jpg, .gif 를 지원하며 xml 로 정의하는 동시에 여러가지 부가적인 속성을 줄 수 있다. 참고로 res/raw 폴더에 들어가지 않은 이미지는 aapt 에 의해 same quality but less memory 가 되도록 optimize 될 수 있다. Nine-patch Drawable Layer List * 여러개의 drawable 을 array 로 관리하는 drawable list 라고 보면 된다. 정의된 순서대로 그려준다. 즉 마지막에 정의된 녀석이 가장 Top 에 그려진다. 속성의 top, right 등은 offs.. 2012. 6. 12. [Android/안드로이드] emulator 의 locale 을 adb를 이용하여 바꾸는 방법. adb -e shell setProp persist.sys.language fr; setprop persist.sys.country CA;stop;sleep 5; start -e 는 다른 device 도 있을 때 emulator 임을 명시하기 위함임. 위의 명령을 수행하면 emulator 가 restart 된다. 이 때 full restart 가 아니다. 도움이 되셨다면 손가락 꾸욱~ 2012. 6. 12. [Android/안드로이드] Runtime 에 Resource change 에 대하여.. http://developer.android.com/guide/topics/resources/runtime-changes.html - configuration change 가 발생할 때 costly 한 object 들을 보관하기 위해서는 onRetainNonConfigurationInstance() 함수를 통해서 retain 하고 싶은 object 를 return 해주면 된다. 복구는 activity 가 다시 create 될 때 getLastNonConfigurationInstance() 를 통해 recover 할 수 있다. onRetainNonConfigurationInstance() 는 onStop() 과 onDestroy() 사이에 불린다. - 위의 방법 대신에 Bundle 에 Data 를 넣는 방.. 2012. 6. 12. [Android/안드로이드] Resource 접근에 대하여.. http://developer.android.com/guide/topics/resources/accessing-resources.html - code 에서의 resource 접근은 [PackageName.]ResourceType.ResourceName - code 에서의 paltform resource 접근은 android.R.ResourceType.ResourceName - XML 에서의 resource 접근은 @[PackageName:]ResourceType/ResourceName - XML 에서의 style 접근은 ?[PackageName:ResourceType/]ResourceName 도움이 되셨다면 손가락 꾸욱~ 2012. 6. 12. [Android/안드로이드] Resource 제공에 대하여.. http://developer.android.com/guide/topics/resources/providing-resources.html - resource folder들 * animator : property animation 정의 * anim : tween animation 정의 * color : color 정의 * drawable : bitmap, nine-patch, state lists, shapes, animation drawable, other drawable * layout * menu * raw : raw form 의 arbitary files. ( Asset 과 비슷 ) * values : string, integer 등의 simple values. ( arrays.xml, colors.. 2012. 6. 12. [Android/안드로이드] Android 는 View 를 어떻게 그리는가? http://developer.android.com/guide/topics/ui/how-android-draws.html - Activity 가 focus 를 받으면 view 를 그리도록 되어 있다. Activity 에서는 root node 를 제공해주고, layout tree 를 따라가면서 어떤 size 로 그릴 것인지는 measure 한다. tree를 traverse 하며, parent 가 먼저 그리고 그 다음에 child 가 그려진다. - layout 그리는 것은 2가지 과정. measure pass & layout pass. measure pass 는 measure( int, int )를 통해서 top-down traversal 로 간다. 트리를 쭉 훑은 후에 dimension 은 각 view 에.. 2012. 6. 12. 반응형 이전 1 ··· 90 91 92 93 94 95 96 ··· 125 다음