ThreadUtils$ThreadPoolExecutor4Util.smali
.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 static constructor <clinit>()V
.registers 1
return-void
.end method
.method constructor <init>(IIJLjava/util/concurrent/TimeUnit;Lcom/blankj/utilcode/util/ThreadUtils$LinkedBlockingQueue4Util;Ljava/util/concurrent/ThreadFactory;)V
.registers 9
.param p1, "corePoolSize" # I
.param p2, "maximumPoolSize" # I
.param p3, "keepAliveTime" # J
.param p5, "unit" # Ljava/util/concurrent/TimeUnit;
.param p6, "workQueue" # Lcom/blankj/utilcode/util/ThreadUtils$LinkedBlockingQueue4Util;
.param p7, "threadFactory" # Ljava/util/concurrent/ThreadFactory;
.line 1026
invoke-direct/range {p0 .. p7}, Ljava/util/concurrent/ThreadPoolExecutor;-><init>(IIJLjava/util/concurrent/TimeUnit;Ljava/util/concurrent/BlockingQueue;Ljava/util/concurrent/ThreadFactory;)V
.line 1018
new-instance v0, Ljava/util/concurrent/atomic/AtomicInteger;
invoke-direct {v0}, Ljava/util/concurrent/atomic/AtomicInteger;-><init>()V
iput-object v0, p0, Lcom/blankj/utilcode/util/ThreadUtils$ThreadPoolExecutor4Util;->mSubmittedCount:Ljava/util/concurrent/atomic/AtomicInteger;
.line 1031
# setter for: Lcom/blankj/utilcode/util/ThreadUtils$LinkedBlockingQueue4Util;->mPool:Lcom/blankj/utilcode/util/ThreadUtils$ThreadPoolExecutor4Util;
invoke-static {p6, p0}, Lcom/blankj/utilcode/util/ThreadUtils$LinkedBlockingQueue4Util;->access$602(Lcom/blankj/utilcode/util/ThreadUtils$LinkedBlockingQueue4Util;Lcom/blankj/utilcode/util/ThreadUtils$ThreadPoolExecutor4Util;)Lcom/blankj/utilcode/util/ThreadUtils$ThreadPoolExecutor4Util;
.line 1032
iput-object p6, p0, Lcom/blankj/utilcode/util/ThreadUtils$ThreadPoolExecutor4Util;->mWorkQueue:Lcom/blankj/utilcode/util/ThreadUtils$LinkedBlockingQueue4Util;
.line 1033
return-void
.end method
.method static synthetic access$400(II)Ljava/util/concurrent/ExecutorService;
.registers 3
.param p0, "x0" # I
.param p1, "x1" # I
.line 981
invoke-static {p0, p1}, Lcom/blankj/utilcode/util/ThreadUtils$ThreadPoolExecutor4Util;->createPool(II)Ljava/util/concurrent/ExecutorService;
move-result-object v0
return-object v0
.end method
.method private static createPool(II)Ljava/util/concurrent/ExecutorService;
.registers 28
.param p0, "type" # I
.param p1, "priority" # I
.line 984
move/from16 v8, p0
move/from16 v9, p1
const/4 v0, -0x8
const/4 v1, 0x1
if-eq v8, v0, :cond_a4
const/4 v0, -0x4
if-eq v8, v0, :cond_7b
const/4 v0, -0x2
if-eq v8, v0, :cond_5b
const/4 v0, -0x1
if-eq v8, v0, :cond_40
.line 1010
new-instance v10, 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;-><init>()V
new-instance v7, Lcom/blankj/utilcode/util/ThreadUtils$UtilsThreadFactory;
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
const-string v1, "fixed("
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0, v8}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
const-string v1, ")"
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-direct {v7, v0, v9}, Lcom/blankj/utilcode/util/ThreadUtils$UtilsThreadFactory;-><init>(Ljava/lang/String;I)V
move-object v0, v10
move/from16 v1, p0
move/from16 v2, p0
invoke-direct/range {v0 .. v7}, Lcom/blankj/utilcode/util/ThreadUtils$ThreadPoolExecutor4Util;-><init>(IIJLjava/util/concurrent/TimeUnit;Lcom/blankj/utilcode/util/ThreadUtils$LinkedBlockingQueue4Util;Ljava/util/concurrent/ThreadFactory;)V
return-object v10
.line 986
:cond_40
new-instance v0, Lcom/blankj/utilcode/util/ThreadUtils$ThreadPoolExecutor4Util;
const/4 v12, 0x1
const/4 v13, 0x1
const-wide/16 v14, 0x0
sget-object v16, Ljava/util/concurrent/TimeUnit;->MILLISECONDS:Ljava/util/concurrent/TimeUnit;
new-instance v17, Lcom/blankj/utilcode/util/ThreadUtils$LinkedBlockingQueue4Util;
invoke-direct/range {v17 .. v17}, Lcom/blankj/utilcode/util/ThreadUtils$LinkedBlockingQueue4Util;-><init>()V
new-instance v1, Lcom/blankj/utilcode/util/ThreadUtils$UtilsThreadFactory;
const-string v2, "single"
invoke-direct {v1, v2, v9}, Lcom/blankj/utilcode/util/ThreadUtils$UtilsThreadFactory;-><init>(Ljava/lang/String;I)V
move-object v11, v0
move-object/from16 v18, v1
invoke-direct/range {v11 .. v18}, Lcom/blankj/utilcode/util/ThreadUtils$ThreadPoolExecutor4Util;-><init>(IIJLjava/util/concurrent/TimeUnit;Lcom/blankj/utilcode/util/ThreadUtils$LinkedBlockingQueue4Util;Ljava/util/concurrent/ThreadFactory;)V
return-object v0
.line 992
:cond_5b
new-instance v0, Lcom/blankj/utilcode/util/ThreadUtils$ThreadPoolExecutor4Util;
const/16 v19, 0x0
const/16 v20, 0x80
const-wide/16 v21, 0x3c
sget-object v23, Ljava/util/concurrent/TimeUnit;->SECONDS:Ljava/util/concurrent/TimeUnit;
new-instance v2, Lcom/blankj/utilcode/util/ThreadUtils$LinkedBlockingQueue4Util;
invoke-direct {v2, v1}, Lcom/blankj/utilcode/util/ThreadUtils$LinkedBlockingQueue4Util;-><init>(Z)V
new-instance v1, Lcom/blankj/utilcode/util/ThreadUtils$UtilsThreadFactory;
const-string v3, "cached"
invoke-direct {v1, v3, v9}, Lcom/blankj/utilcode/util/ThreadUtils$UtilsThreadFactory;-><init>(Ljava/lang/String;I)V
move-object/from16 v18, v0
move-object/from16 v24, v2
move-object/from16 v25, v1
invoke-direct/range {v18 .. v25}, Lcom/blankj/utilcode/util/ThreadUtils$ThreadPoolExecutor4Util;-><init>(IIJLjava/util/concurrent/TimeUnit;Lcom/blankj/utilcode/util/ThreadUtils$LinkedBlockingQueue4Util;Ljava/util/concurrent/ThreadFactory;)V
return-object v0
.line 998
:cond_7b
new-instance v0, Lcom/blankj/utilcode/util/ThreadUtils$ThreadPoolExecutor4Util;
# getter for: Lcom/blankj/utilcode/util/ThreadUtils;->CPU_COUNT:I
invoke-static {}, Lcom/blankj/utilcode/util/ThreadUtils;->access$500()I
move-result v2
mul-int/lit8 v2, v2, 0x2
add-int/lit8 v11, v2, 0x1
# getter for: Lcom/blankj/utilcode/util/ThreadUtils;->CPU_COUNT:I
invoke-static {}, Lcom/blankj/utilcode/util/ThreadUtils;->access$500()I
move-result v2
mul-int/lit8 v2, v2, 0x2
add-int/lit8 v12, v2, 0x1
const-wide/16 v13, 0x1e
sget-object v15, Ljava/util/concurrent/TimeUnit;->SECONDS:Ljava/util/concurrent/TimeUnit;
new-instance v16, Lcom/blankj/utilcode/util/ThreadUtils$LinkedBlockingQueue4Util;
invoke-direct/range {v16 .. v16}, Lcom/blankj/utilcode/util/ThreadUtils$LinkedBlockingQueue4Util;-><init>()V
new-instance v1, Lcom/blankj/utilcode/util/ThreadUtils$UtilsThreadFactory;
const-string v2, "io"
invoke-direct {v1, v2, v9}, Lcom/blankj/utilcode/util/ThreadUtils$UtilsThreadFactory;-><init>(Ljava/lang/String;I)V
move-object v10, v0
move-object/from16 v17, v1
invoke-direct/range {v10 .. v17}, Lcom/blankj/utilcode/util/ThreadUtils$ThreadPoolExecutor4Util;-><init>(IIJLjava/util/concurrent/TimeUnit;Lcom/blankj/utilcode/util/ThreadUtils$LinkedBlockingQueue4Util;Ljava/util/concurrent/ThreadFactory;)V
return-object v0
.line 1004
:cond_a4
new-instance v0, Lcom/blankj/utilcode/util/ThreadUtils$ThreadPoolExecutor4Util;
# getter for: Lcom/blankj/utilcode/util/ThreadUtils;->CPU_COUNT:I
invoke-static {}, Lcom/blankj/utilcode/util/ThreadUtils;->access$500()I
move-result v2
add-int/lit8 v18, v2, 0x1
# getter for: Lcom/blankj/utilcode/util/ThreadUtils;->CPU_COUNT:I
invoke-static {}, Lcom/blankj/utilcode/util/ThreadUtils;->access$500()I
move-result v2
mul-int/lit8 v2, v2, 0x2
add-int/lit8 v19, v2, 0x1
const-wide/16 v20, 0x1e
sget-object v22, Ljava/util/concurrent/TimeUnit;->SECONDS:Ljava/util/concurrent/TimeUnit;
new-instance v2, Lcom/blankj/utilcode/util/ThreadUtils$LinkedBlockingQueue4Util;
invoke-direct {v2, v1}, Lcom/blankj/utilcode/util/ThreadUtils$LinkedBlockingQueue4Util;-><init>(Z)V
new-instance v1, Lcom/blankj/utilcode/util/ThreadUtils$UtilsThreadFactory;
const-string v3, "cpu"
invoke-direct {v1, v3, v9}, Lcom/blankj/utilcode/util/ThreadUtils$UtilsThreadFactory;-><init>(Ljava/lang/String;I)V
move-object/from16 v17, v0
move-object/from16 v23, v2
move-object/from16 v24, v1
invoke-direct/range {v17 .. v24}, Lcom/blankj/utilcode/util/ThreadUtils$ThreadPoolExecutor4Util;-><init>(IIJLjava/util/concurrent/TimeUnit;Lcom/blankj/utilcode/util/ThreadUtils$LinkedBlockingQueue4Util;Ljava/util/concurrent/ThreadFactory;)V
return-object v0
.end method
.method private getSubmittedCount()I
.registers 2
.line 1036
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
.registers 4
.param p1, "r" # Ljava/lang/Runnable;
.param p2, "t" # Ljava/lang/Throwable;
.line 1041
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 1042
invoke-super {p0, p1, p2}, Ljava/util/concurrent/ThreadPoolExecutor;->afterExecute(Ljava/lang/Runnable;Ljava/lang/Throwable;)V
.line 1043
return-void
.end method
.method public execute(Ljava/lang/Runnable;)V
.registers 5
.param p1, "command" # Ljava/lang/Runnable;
.line 1046
if-eqz p1, :cond_28
.line 1047
invoke-virtual {p0}, Lcom/blankj/utilcode/util/ThreadUtils$ThreadPoolExecutor4Util;->isShutdown()Z
move-result v0
if-eqz v0, :cond_9
return-void
.line 1048
:cond_9
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 1050
:try_start_e
invoke-super {p0, p1}, Ljava/util/concurrent/ThreadPoolExecutor;->execute(Ljava/lang/Runnable;)V
:try_end_11
.catch Ljava/util/concurrent/RejectedExecutionException; {:try_start_e .. :try_end_11} :catch_19
.catchall {:try_start_e .. :try_end_11} :catchall_12
.line 1056
:goto_11
goto :goto_27
.line 1054
:catchall_12
move-exception v0
.line 1055
.local v0, "t":Ljava/lang/Throwable;
iget-object v1, p0, Lcom/blankj/utilcode/util/ThreadUtils$ThreadPoolExecutor4Util;->mSubmittedCount:Ljava/util/concurrent/atomic/AtomicInteger;
invoke-virtual {v1}, Ljava/util/concurrent/atomic/AtomicInteger;->decrementAndGet()I
goto :goto_27
.line 1051
.end local v0 # "t":Ljava/lang/Throwable;
:catch_19
move-exception v0
.line 1052
.local v0, "ignore":Ljava/util/concurrent/RejectedExecutionException;
const-string v1, "ThreadUtils"
const-string v2, "This will not happen!"
invoke-static {v1, v2}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I
.line 1053
iget-object v1, p0, Lcom/blankj/utilcode/util/ThreadUtils$ThreadPoolExecutor4Util;->mWorkQueue:Lcom/blankj/utilcode/util/ThreadUtils$LinkedBlockingQueue4Util;
invoke-virtual {v1, p1}, Lcom/blankj/utilcode/util/ThreadUtils$LinkedBlockingQueue4Util;->offer(Ljava/lang/Runnable;)Z
.end local v0 # "ignore":Ljava/util/concurrent/RejectedExecutionException;
goto :goto_11
.line 1057
:goto_27
return-void
.line 1046
:cond_28
new-instance v0, Ljava/lang/NullPointerException;
const-string v1, "Argument \'command\' of type Runnable (#0 out of 1, zero-based) is marked by @android.support.annotation.NonNull but got null for it"
invoke-direct {v0, v1}, Ljava/lang/NullPointerException;-><init>(Ljava/lang/String;)V
goto :goto_31
:goto_30
throw v0
:goto_31
goto :goto_30
.end method