ThreadUtils.smali

.class public Lim/tpelyyftgw/ui/hui/visualcall/ThreadUtils;
.super Ljava/lang/Object;
.source "ThreadUtils.java"


# static fields
.field private static final CORE_POOL_SIZE:I

.field private static final CPU_COUNT:I

.field private static final KEEP_ALIVE_SECONDS:I = 0x1e

.field private static final MAXIMUM_POOL_SIZE:I

.field private static final POOL_WORK_QUEUE:Ljava/util/concurrent/BlockingQueue;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ljava/util/concurrent/BlockingQueue<",
            "Ljava/lang/Runnable;",
            ">;"
        }
    .end annotation
.end field

.field private static final TAG:Ljava/lang/String;

.field private static final THREAD_FACTORY:Ljava/util/concurrent/ThreadFactory;

.field private static final THREAD_POOL_EXECUTOR:Ljava/util/concurrent/ThreadPoolExecutor;

.field private static sMainHandler:Landroid/os/Handler;


# direct methods
.method static constructor <clinit>()V
    .registers 10

    .line 25
    new-instance v0, Landroid/os/Handler;

    invoke-static {}, Landroid/os/Looper;->getMainLooper()Landroid/os/Looper;

    move-result-object v1

    invoke-direct {v0, v1}, Landroid/os/Handler;-><init>(Landroid/os/Looper;)V

    sput-object v0, Lim/tpelyyftgw/ui/hui/visualcall/ThreadUtils;->sMainHandler:Landroid/os/Handler;

    .line 26
    const-class v0, Lim/tpelyyftgw/ui/hui/visualcall/ThreadUtils;

    invoke-virtual {v0}, Ljava/lang/Class;->getName()Ljava/lang/String;

    move-result-object v0

    sput-object v0, Lim/tpelyyftgw/ui/hui/visualcall/ThreadUtils;->TAG:Ljava/lang/String;

    .line 31
    invoke-static {}, Ljava/lang/Runtime;->getRuntime()Ljava/lang/Runtime;

    move-result-object v0

    invoke-virtual {v0}, Ljava/lang/Runtime;->availableProcessors()I

    move-result v0

    sput v0, Lim/tpelyyftgw/ui/hui/visualcall/ThreadUtils;->CPU_COUNT:I

    .line 35
    const/4 v1, 0x1

    sub-int/2addr v0, v1

    const/4 v2, 0x4

    invoke-static {v0, v2}, Ljava/lang/Math;->min(II)I

    move-result v0

    const/4 v2, 0x2

    invoke-static {v2, v0}, Ljava/lang/Math;->max(II)I

    move-result v0

    sput v0, Lim/tpelyyftgw/ui/hui/visualcall/ThreadUtils;->CORE_POOL_SIZE:I

    .line 36
    sget v0, Lim/tpelyyftgw/ui/hui/visualcall/ThreadUtils;->CPU_COUNT:I

    mul-int/lit8 v0, v0, 0x2

    add-int/2addr v0, v1

    sput v0, Lim/tpelyyftgw/ui/hui/visualcall/ThreadUtils;->MAXIMUM_POOL_SIZE:I

    .line 38
    new-instance v0, Ljava/util/concurrent/LinkedBlockingQueue;

    const/16 v2, 0x80

    invoke-direct {v0, v2}, Ljava/util/concurrent/LinkedBlockingQueue;-><init>(I)V

    sput-object v0, Lim/tpelyyftgw/ui/hui/visualcall/ThreadUtils;->POOL_WORK_QUEUE:Ljava/util/concurrent/BlockingQueue;

    .line 40
    new-instance v0, Lim/tpelyyftgw/ui/hui/visualcall/ThreadUtils$1;

    invoke-direct {v0}, Lim/tpelyyftgw/ui/hui/visualcall/ThreadUtils$1;-><init>()V

    sput-object v0, Lim/tpelyyftgw/ui/hui/visualcall/ThreadUtils;->THREAD_FACTORY:Ljava/util/concurrent/ThreadFactory;

    .line 54
    new-instance v0, Ljava/util/concurrent/ThreadPoolExecutor;

    sget v3, Lim/tpelyyftgw/ui/hui/visualcall/ThreadUtils;->CORE_POOL_SIZE:I

    sget v4, Lim/tpelyyftgw/ui/hui/visualcall/ThreadUtils;->MAXIMUM_POOL_SIZE:I

    sget-object v7, Ljava/util/concurrent/TimeUnit;->SECONDS:Ljava/util/concurrent/TimeUnit;

    sget-object v8, Lim/tpelyyftgw/ui/hui/visualcall/ThreadUtils;->POOL_WORK_QUEUE:Ljava/util/concurrent/BlockingQueue;

    sget-object v9, Lim/tpelyyftgw/ui/hui/visualcall/ThreadUtils;->THREAD_FACTORY:Ljava/util/concurrent/ThreadFactory;

    const-wide/16 v5, 0x1e

    move-object v2, v0

    invoke-direct/range {v2 .. v9}, Ljava/util/concurrent/ThreadPoolExecutor;-><init>(IIJLjava/util/concurrent/TimeUnit;Ljava/util/concurrent/BlockingQueue;Ljava/util/concurrent/ThreadFactory;)V

    .line 57
    .local v0, "threadPoolExecutor":Ljava/util/concurrent/ThreadPoolExecutor;
    invoke-virtual {v0, v1}, Ljava/util/concurrent/ThreadPoolExecutor;->allowCoreThreadTimeOut(Z)V

    .line 58
    sput-object v0, Lim/tpelyyftgw/ui/hui/visualcall/ThreadUtils;->THREAD_POOL_EXECUTOR:Ljava/util/concurrent/ThreadPoolExecutor;

    .line 59
    .end local v0    # "threadPoolExecutor":Ljava/util/concurrent/ThreadPoolExecutor;
    return-void
.end method

.method public constructor <init>()V
    .registers 1

    .line 23
    invoke-direct {p0}, Ljava/lang/Object;-><init>()V

    return-void
.end method

.method public static runOnSubThread(Ljava/lang/Runnable;)V
    .registers 3
    .param p0, "runnable"    # Ljava/lang/Runnable;

    .line 85
    sget-object v0, Lim/tpelyyftgw/ui/hui/visualcall/ThreadUtils;->THREAD_POOL_EXECUTOR:Ljava/util/concurrent/ThreadPoolExecutor;

    invoke-virtual {v0}, Ljava/util/concurrent/ThreadPoolExecutor;->getQueue()Ljava/util/concurrent/BlockingQueue;

    move-result-object v0

    invoke-interface {v0}, Ljava/util/concurrent/BlockingQueue;->size()I

    move-result v0

    const/16 v1, 0x80

    if-eq v0, v1, :cond_1d

    sget-object v0, Lim/tpelyyftgw/ui/hui/visualcall/ThreadUtils;->THREAD_POOL_EXECUTOR:Ljava/util/concurrent/ThreadPoolExecutor;

    invoke-virtual {v0}, Ljava/util/concurrent/ThreadPoolExecutor;->isShutdown()Z

    move-result v0

    if-eqz v0, :cond_17

    goto :goto_1d

    .line 89
    :cond_17
    sget-object v0, Lim/tpelyyftgw/ui/hui/visualcall/ThreadUtils;->THREAD_POOL_EXECUTOR:Ljava/util/concurrent/ThreadPoolExecutor;

    invoke-virtual {v0, p0}, Ljava/util/concurrent/ThreadPoolExecutor;->execute(Ljava/lang/Runnable;)V

    .line 90
    return-void

    .line 86
    :cond_1d
    :goto_1d
    sget-object v0, Lim/tpelyyftgw/ui/hui/visualcall/ThreadUtils;->TAG:Ljava/lang/String;

    const-string v1, "\u7ebf\u7a0b\u6c60\u7206\u6ee1\u8b66\u544a\uff0c\u8bf7\u67e5\u770b\u662f\u5426\u5f00\u542f\u4e86\u8fc7\u591a\u7684\u8017\u65f6\u7ebf\u7a0b"

    invoke-static {v0, v1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I

    .line 87
    return-void
.end method

.method public static runOnUiThread(Ljava/lang/Runnable;)V
    .registers 3
    .param p0, "runnable"    # Ljava/lang/Runnable;

    .line 66
    const-wide/16 v0, 0x0

    invoke-static {p0, v0, v1}, Lim/tpelyyftgw/ui/hui/visualcall/ThreadUtils;->runOnUiThread(Ljava/lang/Runnable;J)V

    .line 67
    return-void
.end method

.method public static runOnUiThread(Ljava/lang/Runnable;J)V
    .registers 4
    .param p0, "runnable"    # Ljava/lang/Runnable;
    .param p1, "delayed"    # J

    .line 75
    sget-object v0, Lim/tpelyyftgw/ui/hui/visualcall/ThreadUtils;->sMainHandler:Landroid/os/Handler;

    invoke-virtual {v0, p0, p1, p2}, Landroid/os/Handler;->postDelayed(Ljava/lang/Runnable;J)Z

    .line 76
    return-void
.end method