sig
  type t = java'util'concurrent'ThreadPoolExecutor java_instance
  val make :
    core_pool_size:java_int ->
    max_pool_size:java_int ->
    java_long ->
    TimeUnit.t -> RejectedExecutionHandler.t -> ThreadPoolExecutor.t
  val await_termination :
    ThreadPoolExecutor.t -> java_long -> TimeUnit.t -> bool
  val get_active_count : ThreadPoolExecutor.t -> java_int
  val get_completed_task_count : ThreadPoolExecutor.t -> java_long
  val get_core_pool_size : ThreadPoolExecutor.t -> java_int
  val get_keep_alive_time : ThreadPoolExecutor.t -> TimeUnit.t -> java_long
  val get_largest_pool_size : ThreadPoolExecutor.t -> java_int
  val get_maximum_pool_size : ThreadPoolExecutor.t -> java_int
  val get_pool_size : ThreadPoolExecutor.t -> java_int
  val get_rejected_execution_handler :
    ThreadPoolExecutor.t -> RejectedExecutionHandler.t
  val get_task_count : ThreadPoolExecutor.t -> java_long
  val invoke_all :
    ThreadPoolExecutor.t -> (unit -> 'a) list -> 'Future.t list
  val invoke_all_time :
    ThreadPoolExecutor.t ->
    (unit -> 'a) list -> java_long -> TimeUnit.t -> 'Future.t list
  val invoke_any : ThreadPoolExecutor.t -> (unit -> 'a) list -> 'a
  val invoke_any_time :
    ThreadPoolExecutor.t ->
    (unit -> 'a) list -> java_long -> TimeUnit.t -> 'a
  val is_shutdown : ThreadPoolExecutor.t -> bool
  val is_terminated : ThreadPoolExecutor.t -> bool
  val is_terminating : ThreadPoolExecutor.t -> bool
  val set_core_pool_size : ThreadPoolExecutor.t -> java_int -> unit
  val set_keep_alive_time :
    ThreadPoolExecutor.t -> java_long -> TimeUnit.t -> unit
  val set_maximum_pool_size : ThreadPoolExecutor.t -> java_int -> unit
  val set_rejected_execution_handler :
    ThreadPoolExecutor.t -> RejectedExecutionHandler.t -> unit
  val shutdown : ThreadPoolExecutor.t -> unit
  val shutdown_now : ThreadPoolExecutor.t -> 'Future.t list
  val submit : ThreadPoolExecutor.t -> ('-> 'b) -> '-> 'Future.t
  val null : ThreadPoolExecutor.t
  external is_null : ThreadPoolExecutor.t -> bool = "java is_null"
  external is_not_null : ThreadPoolExecutor.t -> bool = "java is_not_null"
  val wrap : ThreadPoolExecutor.t -> ThreadPoolExecutor.t option
  val unwrap : ThreadPoolExecutor.t option -> ThreadPoolExecutor.t
end