.class final Lcom/blankj/utilcode/util/ThreadUtils$ThreadPoolExecutor4Util; .super Ljava/util/concurrent/ThreadPoolExecutor; .source "ThreadUtils.java" # annotations .annotation system Ldalvik/annotation/EnclosingClass; value = Lcom/blankj/utilcode/util/ThreadUtils; .end annotation .annotation system Ldalvik/annotation/InnerClass; accessFlags = 0x18 name = "ThreadPoolExecutor4Util" .end annotation # instance fields .field private final mSubmittedCount:Ljava/util/concurrent/atomic/AtomicInteger; .field private mWorkQueue:Lcom/blankj/utilcode/util/ThreadUtils$LinkedBlockingQueue4Util; # direct methods .method constructor (IIJLjava/util/concurrent/TimeUnit;Lcom/blankj/utilcode/util/ThreadUtils$LinkedBlockingQueue4Util;Ljava/util/concurrent/ThreadFactory;)V .locals 0 .line 1042 invoke-direct/range {p0 .. p7}, Ljava/util/concurrent/ThreadPoolExecutor;->(IIJLjava/util/concurrent/TimeUnit;Ljava/util/concurrent/BlockingQueue;Ljava/util/concurrent/ThreadFactory;)V .line 1034 new-instance p1, Ljava/util/concurrent/atomic/AtomicInteger; invoke-direct {p1}, Ljava/util/concurrent/atomic/AtomicInteger;->()V iput-object p1, p0, Lcom/blankj/utilcode/util/ThreadUtils$ThreadPoolExecutor4Util;->mSubmittedCount:Ljava/util/concurrent/atomic/AtomicInteger; .line 1047 invoke-static {p6, p0}, Lcom/blankj/utilcode/util/ThreadUtils$LinkedBlockingQueue4Util;->access$302(Lcom/blankj/utilcode/util/ThreadUtils$LinkedBlockingQueue4Util;Lcom/blankj/utilcode/util/ThreadUtils$ThreadPoolExecutor4Util;)Lcom/blankj/utilcode/util/ThreadUtils$ThreadPoolExecutor4Util; .line 1048 iput-object p6, p0, Lcom/blankj/utilcode/util/ThreadUtils$ThreadPoolExecutor4Util;->mWorkQueue:Lcom/blankj/utilcode/util/ThreadUtils$LinkedBlockingQueue4Util; return-void .end method .method static synthetic access$100(II)Ljava/util/concurrent/ExecutorService; .locals 0 .line 997 invoke-static {p0, p1}, Lcom/blankj/utilcode/util/ThreadUtils$ThreadPoolExecutor4Util;->createPool(II)Ljava/util/concurrent/ExecutorService; move-result-object p0 return-object p0 .end method .method private static createPool(II)Ljava/util/concurrent/ExecutorService; .locals 24 move/from16 v2, p0 move/from16 v0, p1 const/4 v1, -0x8 const/4 v3, 0x1 if-eq v2, v1, :cond_3 const/4 v1, -0x4 if-eq v2, v1, :cond_2 const/4 v1, -0x2 if-eq v2, v1, :cond_1 const/4 v1, -0x1 if-eq v2, v1, :cond_0 .line 1026 new-instance v8, Lcom/blankj/utilcode/util/ThreadUtils$ThreadPoolExecutor4Util; const-wide/16 v3, 0x0 sget-object v5, Ljava/util/concurrent/TimeUnit;->MILLISECONDS:Ljava/util/concurrent/TimeUnit; new-instance v6, Lcom/blankj/utilcode/util/ThreadUtils$LinkedBlockingQueue4Util; invoke-direct {v6}, Lcom/blankj/utilcode/util/ThreadUtils$LinkedBlockingQueue4Util;->()V new-instance v7, Lcom/blankj/utilcode/util/ThreadUtils$UtilsThreadFactory; new-instance v1, Ljava/lang/StringBuilder; invoke-direct {v1}, Ljava/lang/StringBuilder;->()V const-string v9, "fixed(" invoke-virtual {v1, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v1 invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; move-result-object v1 const-string v9, ")" invoke-virtual {v1, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v1 invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v1 invoke-direct {v7, v1, v0}, Lcom/blankj/utilcode/util/ThreadUtils$UtilsThreadFactory;->(Ljava/lang/String;I)V move-object v0, v8 move/from16 v1, p0 move/from16 v2, p0 invoke-direct/range {v0 .. v7}, Lcom/blankj/utilcode/util/ThreadUtils$ThreadPoolExecutor4Util;->(IIJLjava/util/concurrent/TimeUnit;Lcom/blankj/utilcode/util/ThreadUtils$LinkedBlockingQueue4Util;Ljava/util/concurrent/ThreadFactory;)V return-object v8 .line 1002 :cond_0 new-instance v1, Lcom/blankj/utilcode/util/ThreadUtils$ThreadPoolExecutor4Util; const/4 v10, 0x1 const/4 v11, 0x1 const-wide/16 v12, 0x0 sget-object v14, Ljava/util/concurrent/TimeUnit;->MILLISECONDS:Ljava/util/concurrent/TimeUnit; new-instance v15, Lcom/blankj/utilcode/util/ThreadUtils$LinkedBlockingQueue4Util; invoke-direct {v15}, Lcom/blankj/utilcode/util/ThreadUtils$LinkedBlockingQueue4Util;->()V new-instance v2, Lcom/blankj/utilcode/util/ThreadUtils$UtilsThreadFactory; const-string v3, "single" invoke-direct {v2, v3, v0}, Lcom/blankj/utilcode/util/ThreadUtils$UtilsThreadFactory;->(Ljava/lang/String;I)V move-object v9, v1 move-object/from16 v16, v2 invoke-direct/range {v9 .. v16}, Lcom/blankj/utilcode/util/ThreadUtils$ThreadPoolExecutor4Util;->(IIJLjava/util/concurrent/TimeUnit;Lcom/blankj/utilcode/util/ThreadUtils$LinkedBlockingQueue4Util;Ljava/util/concurrent/ThreadFactory;)V return-object v1 .line 1008 :cond_1 new-instance v1, Lcom/blankj/utilcode/util/ThreadUtils$ThreadPoolExecutor4Util; const/16 v17, 0x0 const/16 v18, 0x80 const-wide/16 v19, 0x3c sget-object v21, Ljava/util/concurrent/TimeUnit;->SECONDS:Ljava/util/concurrent/TimeUnit; new-instance v2, Lcom/blankj/utilcode/util/ThreadUtils$LinkedBlockingQueue4Util; invoke-direct {v2, v3}, Lcom/blankj/utilcode/util/ThreadUtils$LinkedBlockingQueue4Util;->(Z)V new-instance v3, Lcom/blankj/utilcode/util/ThreadUtils$UtilsThreadFactory; const-string v4, "cached" invoke-direct {v3, v4, v0}, Lcom/blankj/utilcode/util/ThreadUtils$UtilsThreadFactory;->(Ljava/lang/String;I)V move-object/from16 v16, v1 move-object/from16 v22, v2 move-object/from16 v23, v3 invoke-direct/range {v16 .. v23}, Lcom/blankj/utilcode/util/ThreadUtils$ThreadPoolExecutor4Util;->(IIJLjava/util/concurrent/TimeUnit;Lcom/blankj/utilcode/util/ThreadUtils$LinkedBlockingQueue4Util;Ljava/util/concurrent/ThreadFactory;)V return-object v1 .line 1014 :cond_2 new-instance v1, Lcom/blankj/utilcode/util/ThreadUtils$ThreadPoolExecutor4Util; invoke-static {}, Lcom/blankj/utilcode/util/ThreadUtils;->access$200()I move-result v2 mul-int/lit8 v2, v2, 0x2 add-int/lit8 v6, v2, 0x1 invoke-static {}, Lcom/blankj/utilcode/util/ThreadUtils;->access$200()I move-result v2 mul-int/lit8 v2, v2, 0x2 add-int/lit8 v7, v2, 0x1 const-wide/16 v8, 0x1e sget-object v10, Ljava/util/concurrent/TimeUnit;->SECONDS:Ljava/util/concurrent/TimeUnit; new-instance v11, Lcom/blankj/utilcode/util/ThreadUtils$LinkedBlockingQueue4Util; invoke-direct {v11}, Lcom/blankj/utilcode/util/ThreadUtils$LinkedBlockingQueue4Util;->()V new-instance v12, Lcom/blankj/utilcode/util/ThreadUtils$UtilsThreadFactory; const-string v2, "io" invoke-direct {v12, v2, v0}, Lcom/blankj/utilcode/util/ThreadUtils$UtilsThreadFactory;->(Ljava/lang/String;I)V move-object v5, v1 invoke-direct/range {v5 .. v12}, Lcom/blankj/utilcode/util/ThreadUtils$ThreadPoolExecutor4Util;->(IIJLjava/util/concurrent/TimeUnit;Lcom/blankj/utilcode/util/ThreadUtils$LinkedBlockingQueue4Util;Ljava/util/concurrent/ThreadFactory;)V return-object v1 .line 1020 :cond_3 new-instance v1, Lcom/blankj/utilcode/util/ThreadUtils$ThreadPoolExecutor4Util; invoke-static {}, Lcom/blankj/utilcode/util/ThreadUtils;->access$200()I move-result v2 add-int/lit8 v14, v2, 0x1 invoke-static {}, Lcom/blankj/utilcode/util/ThreadUtils;->access$200()I move-result v2 mul-int/lit8 v2, v2, 0x2 add-int/lit8 v15, v2, 0x1 const-wide/16 v16, 0x1e sget-object v18, Ljava/util/concurrent/TimeUnit;->SECONDS:Ljava/util/concurrent/TimeUnit; new-instance v2, Lcom/blankj/utilcode/util/ThreadUtils$LinkedBlockingQueue4Util; invoke-direct {v2, v3}, Lcom/blankj/utilcode/util/ThreadUtils$LinkedBlockingQueue4Util;->(Z)V new-instance v3, Lcom/blankj/utilcode/util/ThreadUtils$UtilsThreadFactory; const-string v4, "cpu" invoke-direct {v3, v4, v0}, Lcom/blankj/utilcode/util/ThreadUtils$UtilsThreadFactory;->(Ljava/lang/String;I)V move-object v13, v1 move-object/from16 v19, v2 move-object/from16 v20, v3 invoke-direct/range {v13 .. v20}, Lcom/blankj/utilcode/util/ThreadUtils$ThreadPoolExecutor4Util;->(IIJLjava/util/concurrent/TimeUnit;Lcom/blankj/utilcode/util/ThreadUtils$LinkedBlockingQueue4Util;Ljava/util/concurrent/ThreadFactory;)V return-object v1 .end method .method private getSubmittedCount()I .locals 1 .line 1052 iget-object v0, p0, Lcom/blankj/utilcode/util/ThreadUtils$ThreadPoolExecutor4Util;->mSubmittedCount:Ljava/util/concurrent/atomic/AtomicInteger; invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicInteger;->get()I move-result v0 return v0 .end method # virtual methods .method protected afterExecute(Ljava/lang/Runnable;Ljava/lang/Throwable;)V .locals 1 .line 1057 iget-object v0, p0, Lcom/blankj/utilcode/util/ThreadUtils$ThreadPoolExecutor4Util;->mSubmittedCount:Ljava/util/concurrent/atomic/AtomicInteger; invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicInteger;->decrementAndGet()I .line 1058 invoke-super {p0, p1, p2}, Ljava/util/concurrent/ThreadPoolExecutor;->afterExecute(Ljava/lang/Runnable;Ljava/lang/Throwable;)V return-void .end method .method public execute(Ljava/lang/Runnable;)V .locals 2 const-string v0, "Argument \'command\' of type Runnable (#0 out of 1, zero-based) is marked by @android.support.annotation.NonNull but got null for it" .line 1062 invoke-static {p1, v0}, Ljava/util/Objects;->requireNonNull(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object; .line 1063 invoke-virtual {p0}, Lcom/blankj/utilcode/util/ThreadUtils$ThreadPoolExecutor4Util;->isShutdown()Z move-result v0 if-eqz v0, :cond_0 return-void .line 1064 :cond_0 iget-object v0, p0, Lcom/blankj/utilcode/util/ThreadUtils$ThreadPoolExecutor4Util;->mSubmittedCount:Ljava/util/concurrent/atomic/AtomicInteger; invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicInteger;->incrementAndGet()I .line 1066 :try_start_0 invoke-super {p0, p1}, Ljava/util/concurrent/ThreadPoolExecutor;->execute(Ljava/lang/Runnable;)V :try_end_0 .catch Ljava/util/concurrent/RejectedExecutionException; {:try_start_0 .. :try_end_0} :catch_0 .catchall {:try_start_0 .. :try_end_0} :catchall_0 goto :goto_0 .line 1071 :catchall_0 iget-object p1, p0, Lcom/blankj/utilcode/util/ThreadUtils$ThreadPoolExecutor4Util;->mSubmittedCount:Ljava/util/concurrent/atomic/AtomicInteger; invoke-virtual {p1}, Ljava/util/concurrent/atomic/AtomicInteger;->decrementAndGet()I goto :goto_0 :catch_0 const-string v0, "ThreadUtils" const-string v1, "This will not happen!" .line 1068 invoke-static {v0, v1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I .line 1069 iget-object v0, p0, Lcom/blankj/utilcode/util/ThreadUtils$ThreadPoolExecutor4Util;->mWorkQueue:Lcom/blankj/utilcode/util/ThreadUtils$LinkedBlockingQueue4Util; invoke-virtual {v0, p1}, Lcom/blankj/utilcode/util/ThreadUtils$LinkedBlockingQueue4Util;->offer(Ljava/lang/Runnable;)Z :goto_0 return-void .end method