---
title: "Lock Reason Interface"
url: https://develop.sentry.dev/sdk/foundations/transport/event-payloads/lockreason/
---

# Lock Reason Interface

Represents an instance of a held lock (monitor object) in a thread. Typically, this information is useful to determine which other thread is holding the lock in case the current thread is blocked. In languages like `Java` or `Kotlin` this typically will be represented by a `java.lang.Object` type.

Lock reasons are always part of a [thread](https://develop.sentry.dev/sdk/foundations/transport/event-payloads/threads.md). They cannot be declared as a top-level event property.

## [Attributes](https://develop.sentry.dev/sdk/foundations/transport/event-payloads/lockreason.md#attributes)

* `type`

  **Required**. Type of lock on the thread with available options being blocked, waiting, sleeping and locked.

* `address`

  *Optional*. Memory address of the monitor object.

* `package_name`

  *Optional*. Package name of the monitor object.

* `class_name`

  *Optional*. Class name of the monitor object.

* `thread_id`

  *Optional*. Thread ID that's holding the lock.

## [Examples](https://develop.sentry.dev/sdk/foundations/transport/event-payloads/lockreason.md#examples)

```json
{
  "type": 8,
  "address": "0x07d7437b",
  "package_name": "android.database.sqlite",
  "class_name": "SQLiteConnection",
  "thread_id": 2
}
```
