다음을 통해 공유


FileChannel.Lock 메서드

정의

오버로드

Lock()

이 채널의 파일에 대한 배타적 잠금을 획득합니다.

Lock(Int64, Int64, Boolean)

이 채널 파일의 지정된 영역에 대한 잠금을 획득합니다.

Lock()

이 채널의 파일에 대한 배타적 잠금을 획득합니다.

[Android.Runtime.Register("lock", "()Ljava/nio/channels/FileLock;", "")]
public Java.Nio.Channels.FileLock? Lock ();
[<Android.Runtime.Register("lock", "()Ljava/nio/channels/FileLock;", "")>]
member this.Lock : unit -> Java.Nio.Channels.FileLock

반환

새로 획득한 잠금을 나타내는 잠금 개체

특성

예외

파일 채널이 닫혔습니다.

이 채널은 쓰기 위해 열리지 않았습니다.

이 잠금 요청과 겹치는 잠금이 이미 유지되었거나 다른 스레드가 이 요청과 겹치는 잠금을 획득하기 위해 대기 중입니다.

잠금을 획득하기 위해 기다리는 동안 호출 스레드가 중단되었습니다.

호출 스레드가 잠금을 획득하기 위해 대기하는 동안 채널이 닫혔습니다.

요청된 잠금을 가져오는 동안 다른 I/O 오류가 발생하는 경우

설명

이 채널의 파일에 대한 배타적 잠금을 획득합니다.

양식 fc.lock() 의 이 메서드 호출은 호출과 정확히 동일한 방식으로 동작합니다.

fc.{@link #lock(long,long,boolean) lock}(0L, Long.MAX_VALUE, false)

에 대한 java.nio.channels.FileChannel.lock()Java 설명서

이 페이지의 일부는 Android 오픈 소스 프로젝트에서 만들고 공유하고 Creative Commons 2.5 특성 라이선스에 설명된 용어에 따라 사용되는 작업을 기반으로 하는 수정 사항입니다.

적용 대상

Lock(Int64, Int64, Boolean)

이 채널 파일의 지정된 영역에 대한 잠금을 획득합니다.

[Android.Runtime.Register("lock", "(JJZ)Ljava/nio/channels/FileLock;", "GetLock_JJZHandler")]
public abstract Java.Nio.Channels.FileLock? Lock (long position, long size, bool shared);
[<Android.Runtime.Register("lock", "(JJZ)Ljava/nio/channels/FileLock;", "GetLock_JJZHandler")>]
abstract member Lock : int64 * int64 * bool -> Java.Nio.Channels.FileLock

매개 변수

position
Int64

잠긴 영역을 시작할 위치입니다. 는 음수가 아니어야 합니다.

size
Int64

잠긴 영역의 크기입니다. 는 음수가 아니어야 하며 합계 position + size 는 음수가 아니어야 합니다.

shared
Boolean

true 공유 잠금을 요청하려면 이 경우 읽기(및 쓰기 가능)를 위해 이 채널을 열어야 합니다. false 단독 잠금을 요청하려면 이 채널이 쓰기를 위해 열려 있어야 합니다(읽기 가능).

반환

새로 획득한 잠금을 나타내는 잠금 개체

특성

예외

음수이면 position / size 0>입니다.

이 채널이 닫혀 있으면

요청된 지역이 기존 잠금 또는 보류 중인 잠금 요청과 겹치면 입니다.

채널이 읽기 모드로 열리지 않았지만 공유가 true이면 입니다.

채널이 쓰기 모드에서 열리지 않았지만 공유가 false이면 입니다.

이 메서드가 실행되는 동안 이 채널이 다른 스레드에 의해 닫혀 있으면 입니다.

원하는 파일 잠금을 기다리는 동안 스레드가 중단되면 입니다.

다른 I/O 오류가 발생하는 경우

설명

이 채널 파일의 지정된 영역에 대한 잠금을 획득합니다.

이 메서드의 호출은 지역을 잠글 수 있거나, 이 채널이 닫혀 있거나, 호출 스레드가 중단될 때까지 차단됩니다.

이 메서드를 호출하는 동안 다른 스레드가 이 채널을 닫으면 해당 채널이 AsynchronousCloseException throw됩니다.

잠금을 획득하기 위해 대기하는 동안 호출 스레드가 중단되면 해당 인터럽트 상태가 설정되고 throw FileLockInterruptionException 됩니다. 이 메서드가 호출될 때 호출자의 인터럽트 상태가 설정되면 해당 예외가 즉시 throw됩니다. 스레드의 인터럽트 상태는 변경되지 않습니다.

size 매개 변수로 position 지정된 지역은 실제 기본 파일 내에 포함되거나 겹칠 필요가 없습니다. 잠금 영역은 크기가 고정되어 있습니다. 잠긴 영역에 처음에 파일의 끝이 포함되어 있고 파일이 영역 이상으로 커지면 파일의 새 부분이 잠금으로 적용되지 않습니다. 파일의 크기가 증가할 것으로 예상되고 전체 파일에 대한 잠금이 필요한 경우 0부터 시작하는 영역과 예상된 최대 파일 크기보다 작지 않은 영역은 잠가야 합니다. 인수 #lock() 가 0인 메서드는 단순히 크기의 Long#MAX_VALUE영역을 잠급니다.

일부 운영 체제에서는 공유 잠금을 지원하지 않습니다. 이 경우 공유 잠금 요청이 배타적 잠금 요청으로 자동으로 변환됩니다. 새로 획득한 잠금이 공유되는지 또는 배타적인지 여부는 결과 잠금 개체의 FileLock#isShared() isShared 메서드를 호출하여 테스트할 수 있습니다.

파일 잠금은 전체 Java 가상 머신을 대신하여 유지됩니다. 동일한 가상 머신 내의 여러 스레드에서 파일에 대한 액세스를 제어하는 데 적합하지 않습니다.

에 대한 java.nio.channels.FileChannel.lock(long, long, boolean)Java 설명서

이 페이지의 일부는 Android 오픈 소스 프로젝트에서 만들고 공유하고 Creative Commons 2.5 특성 라이선스에 설명된 용어에 따라 사용되는 작업을 기반으로 하는 수정 사항입니다.

적용 대상