.class public Lmtopsdk/mtop/util/MtopSDKThreadPoolExecutorFactory; .super Ljava/lang/Object; # static fields .field private static final CALLBACK_EXECUTOR_SIZE:I = 0x2 .field private static final DEFAULT_CORE_POOL_SIZE:I = 0x3 .field private static final KEEP_ALIVE_TIME:I = 0x1 .field private static final QUEENSIZE:I = 0x80 .field private static final REQUEST_CORE_POOL_SIZE:I = 0x4 .field private static final TAG:Ljava/lang/String; = "mtopsdk.MtopSDKThreadPoolExecutorFactory" .field private static volatile callbackExecutors:[Ljava/util/concurrent/ExecutorService; = null .field private static priority:I = 0xa .field private static volatile requestExecutor:Ljava/util/concurrent/ThreadPoolExecutor; .field private static volatile threadPoolExecutor:Ljava/util/concurrent/ThreadPoolExecutor; # direct methods .method static constructor ()V .locals 0 return-void .end method .method public constructor ()V .locals 0 invoke-direct {p0}, Ljava/lang/Object;->()V return-void .end method .method public static createExecutor(IIIILjava/util/concurrent/ThreadFactory;)Ljava/util/concurrent/ThreadPoolExecutor; .locals 9 if-lez p3, :cond_0 new-instance v0, Ljava/util/concurrent/LinkedBlockingQueue; invoke-direct {v0, p3}, Ljava/util/concurrent/LinkedBlockingQueue;->(I)V :goto_0 move-object v7, v0 goto :goto_1 :cond_0 new-instance v0, Ljava/util/concurrent/LinkedBlockingQueue; invoke-direct {v0}, Ljava/util/concurrent/LinkedBlockingQueue;->()V goto :goto_0 :goto_1 new-instance p3, Ljava/util/concurrent/ThreadPoolExecutor; int-to-long v4, p2 sget-object v6, Ljava/util/concurrent/TimeUnit;->SECONDS:Ljava/util/concurrent/TimeUnit; move-object v1, p3 move v2, p0 move v3, p1 move-object v8, p4 invoke-direct/range {v1 .. v8}, Ljava/util/concurrent/ThreadPoolExecutor;->(IIJLjava/util/concurrent/TimeUnit;Ljava/util/concurrent/BlockingQueue;Ljava/util/concurrent/ThreadFactory;)V return-object p3 .end method .method public static getCallbackExecutorServices()[Ljava/util/concurrent/ExecutorService; .locals 8 sget-object v0, Lmtopsdk/mtop/util/MtopSDKThreadPoolExecutorFactory;->callbackExecutors:[Ljava/util/concurrent/ExecutorService; if-nez v0, :cond_1 const-class v0, Lmtopsdk/mtop/util/MtopSDKThreadPoolExecutorFactory; monitor-enter v0 :try_start_0 sget-object v1, Lmtopsdk/mtop/util/MtopSDKThreadPoolExecutorFactory;->callbackExecutors:[Ljava/util/concurrent/ExecutorService; if-nez v1, :cond_0 const/4 v1, 0x2 new-array v2, v1, [Ljava/util/concurrent/ExecutorService; sput-object v2, Lmtopsdk/mtop/util/MtopSDKThreadPoolExecutorFactory;->callbackExecutors:[Ljava/util/concurrent/ExecutorService; const/4 v2, 0x0 :goto_0 if-ge v2, v1, :cond_0 sget-object v3, Lmtopsdk/mtop/util/MtopSDKThreadPoolExecutorFactory;->callbackExecutors:[Ljava/util/concurrent/ExecutorService; new-instance v4, Lmtopsdk/mtop/util/MtopSDKThreadPoolExecutorFactory$MtopSDKThreadFactory; sget v5, Lmtopsdk/mtop/util/MtopSDKThreadPoolExecutorFactory;->priority:I new-instance v6, Ljava/lang/StringBuilder; const-string v7, "CallbackPool" invoke-direct {v6, v7}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V invoke-virtual {v6, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v6 invoke-direct {v4, v5, v6}, Lmtopsdk/mtop/util/MtopSDKThreadPoolExecutorFactory$MtopSDKThreadFactory;->(ILjava/lang/String;)V invoke-static {v4}, Ljava/util/concurrent/Executors;->newSingleThreadExecutor(Ljava/util/concurrent/ThreadFactory;)Ljava/util/concurrent/ExecutorService; move-result-object v4 aput-object v4, v3, v2 add-int/lit8 v2, v2, 0x1 goto :goto_0 :cond_0 monitor-exit v0 :try_end_0 .catchall {:try_start_0 .. :try_end_0} :catchall_0 goto :goto_1 :catchall_0 move-exception v1 monitor-exit v0 throw v1 :cond_1 :goto_1 sget-object v0, Lmtopsdk/mtop/util/MtopSDKThreadPoolExecutorFactory;->callbackExecutors:[Ljava/util/concurrent/ExecutorService; return-object v0 .end method .method public static getDefaultThreadPoolExecutor()Ljava/util/concurrent/ThreadPoolExecutor; .locals 5 sget-object v0, Lmtopsdk/mtop/util/MtopSDKThreadPoolExecutorFactory;->threadPoolExecutor:Ljava/util/concurrent/ThreadPoolExecutor; if-nez v0, :cond_1 const-class v0, Lmtopsdk/mtop/util/MtopSDKThreadPoolExecutorFactory; monitor-enter v0 :try_start_0 sget-object v1, Lmtopsdk/mtop/util/MtopSDKThreadPoolExecutorFactory;->threadPoolExecutor:Ljava/util/concurrent/ThreadPoolExecutor; if-nez v1, :cond_0 const/4 v1, 0x1 const/16 v2, 0x80 new-instance v3, Lmtopsdk/mtop/util/MtopSDKThreadPoolExecutorFactory$MtopSDKThreadFactory; sget v4, Lmtopsdk/mtop/util/MtopSDKThreadPoolExecutorFactory;->priority:I invoke-direct {v3, v4}, Lmtopsdk/mtop/util/MtopSDKThreadPoolExecutorFactory$MtopSDKThreadFactory;->(I)V const/4 v4, 0x3 invoke-static {v4, v4, v1, v2, v3}, Lmtopsdk/mtop/util/MtopSDKThreadPoolExecutorFactory;->createExecutor(IIIILjava/util/concurrent/ThreadFactory;)Ljava/util/concurrent/ThreadPoolExecutor; move-result-object v1 sput-object v1, Lmtopsdk/mtop/util/MtopSDKThreadPoolExecutorFactory;->threadPoolExecutor:Ljava/util/concurrent/ThreadPoolExecutor; :cond_0 monitor-exit v0 :try_end_0 .catchall {:try_start_0 .. :try_end_0} :catchall_0 goto :goto_0 :catchall_0 move-exception v1 monitor-exit v0 throw v1 :cond_1 :goto_0 sget-object v0, Lmtopsdk/mtop/util/MtopSDKThreadPoolExecutorFactory;->threadPoolExecutor:Ljava/util/concurrent/ThreadPoolExecutor; return-object v0 .end method .method public static getRequestThreadPoolExecutor()Ljava/util/concurrent/ThreadPoolExecutor; .locals 6 sget-object v0, Lmtopsdk/mtop/util/MtopSDKThreadPoolExecutorFactory;->requestExecutor:Ljava/util/concurrent/ThreadPoolExecutor; if-nez v0, :cond_1 const-class v0, Lmtopsdk/mtop/util/MtopSDKThreadPoolExecutorFactory; monitor-enter v0 :try_start_0 sget-object v1, Lmtopsdk/mtop/util/MtopSDKThreadPoolExecutorFactory;->requestExecutor:Ljava/util/concurrent/ThreadPoolExecutor; if-nez v1, :cond_0 const/4 v1, 0x1 const/4 v2, 0x0 new-instance v3, Lmtopsdk/mtop/util/MtopSDKThreadPoolExecutorFactory$MtopSDKThreadFactory; sget v4, Lmtopsdk/mtop/util/MtopSDKThreadPoolExecutorFactory;->priority:I const-string v5, "RequestPool" invoke-direct {v3, v4, v5}, Lmtopsdk/mtop/util/MtopSDKThreadPoolExecutorFactory$MtopSDKThreadFactory;->(ILjava/lang/String;)V const/4 v4, 0x4 invoke-static {v4, v4, v1, v2, v3}, Lmtopsdk/mtop/util/MtopSDKThreadPoolExecutorFactory;->createExecutor(IIIILjava/util/concurrent/ThreadFactory;)Ljava/util/concurrent/ThreadPoolExecutor; move-result-object v1 sput-object v1, Lmtopsdk/mtop/util/MtopSDKThreadPoolExecutorFactory;->requestExecutor:Ljava/util/concurrent/ThreadPoolExecutor; :cond_0 monitor-exit v0 :try_end_0 .catchall {:try_start_0 .. :try_end_0} :catchall_0 goto :goto_0 :catchall_0 move-exception v1 monitor-exit v0 throw v1 :cond_1 :goto_0 sget-object v0, Lmtopsdk/mtop/util/MtopSDKThreadPoolExecutorFactory;->requestExecutor:Ljava/util/concurrent/ThreadPoolExecutor; return-object v0 .end method .method public static setCallbackExecutorServices([Ljava/util/concurrent/ExecutorService;)V .locals 1 if-eqz p0, :cond_0 array-length v0, p0 if-lez v0, :cond_0 sput-object p0, Lmtopsdk/mtop/util/MtopSDKThreadPoolExecutorFactory;->callbackExecutors:[Ljava/util/concurrent/ExecutorService; :cond_0 return-void .end method .method public static setDefaultThreadPoolExecutor(Ljava/util/concurrent/ThreadPoolExecutor;)V .locals 0 if-eqz p0, :cond_0 sput-object p0, Lmtopsdk/mtop/util/MtopSDKThreadPoolExecutorFactory;->threadPoolExecutor:Ljava/util/concurrent/ThreadPoolExecutor; :cond_0 return-void .end method .method public static setRequestThreadPoolExecutor(Ljava/util/concurrent/ThreadPoolExecutor;)V .locals 0 if-eqz p0, :cond_0 sput-object p0, Lmtopsdk/mtop/util/MtopSDKThreadPoolExecutorFactory;->requestExecutor:Ljava/util/concurrent/ThreadPoolExecutor; :cond_0 return-void .end method .method public static submit(Ljava/lang/Runnable;)Ljava/util/concurrent/Future; .locals 3 :try_start_0 invoke-static {}, Lmtopsdk/mtop/util/MtopSDKThreadPoolExecutorFactory;->getDefaultThreadPoolExecutor()Ljava/util/concurrent/ThreadPoolExecutor; move-result-object v0 invoke-virtual {v0, p0}, Ljava/util/concurrent/ThreadPoolExecutor;->submit(Ljava/lang/Runnable;)Ljava/util/concurrent/Future; move-result-object p0 :try_end_0 .catch Ljava/lang/Throwable; {:try_start_0 .. :try_end_0} :catch_0 goto :goto_0 :catch_0 move-exception p0 const-string v0, "mtopsdk.MtopSDKThreadPoolExecutorFactory" new-instance v1, Ljava/lang/StringBuilder; const-string v2, "[submit]submit runnable to Mtop Default ThreadPool error ---" invoke-direct {v1, v2}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V invoke-virtual {p0}, Ljava/lang/Throwable;->toString()Ljava/lang/String; move-result-object p0 invoke-virtual {v1, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object p0 invoke-static {v0, p0}, Lmtopsdk/common/util/TBSdkLog;->e(Ljava/lang/String;Ljava/lang/String;)V const/4 p0, 0x0 :goto_0 return-object p0 .end method .method public static submitCallbackTask(ILjava/lang/Runnable;)Ljava/util/concurrent/Future; .locals 2 :try_start_0 invoke-static {}, Lmtopsdk/mtop/util/MtopSDKThreadPoolExecutorFactory;->getCallbackExecutorServices()[Ljava/util/concurrent/ExecutorService; move-result-object v0 array-length v0, v0 rem-int/2addr p0, v0 invoke-static {p0}, Ljava/lang/Math;->abs(I)I move-result p0 invoke-static {}, Lmtopsdk/mtop/util/MtopSDKThreadPoolExecutorFactory;->getCallbackExecutorServices()[Ljava/util/concurrent/ExecutorService; move-result-object v0 aget-object p0, v0, p0 invoke-interface {p0, p1}, Ljava/util/concurrent/ExecutorService;->submit(Ljava/lang/Runnable;)Ljava/util/concurrent/Future; move-result-object p0 :try_end_0 .catch Ljava/lang/Throwable; {:try_start_0 .. :try_end_0} :catch_0 goto :goto_0 :catch_0 move-exception p0 const-string p1, "mtopsdk.MtopSDKThreadPoolExecutorFactory" new-instance v0, Ljava/lang/StringBuilder; const-string v1, "[submitCallbackTask]submit runnable to Mtop Callback ThreadPool error ---" invoke-direct {v0, v1}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V invoke-virtual {p0}, Ljava/lang/Throwable;->toString()Ljava/lang/String; move-result-object p0 invoke-virtual {v0, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object p0 invoke-static {p1, p0}, Lmtopsdk/common/util/TBSdkLog;->e(Ljava/lang/String;Ljava/lang/String;)V const/4 p0, 0x0 :goto_0 return-object p0 .end method .method public static submitRequestTask(Ljava/lang/Runnable;)Ljava/util/concurrent/Future; .locals 3 :try_start_0 invoke-static {}, Lmtopsdk/mtop/util/MtopSDKThreadPoolExecutorFactory;->getRequestThreadPoolExecutor()Ljava/util/concurrent/ThreadPoolExecutor; move-result-object v0 invoke-virtual {v0, p0}, Ljava/util/concurrent/ThreadPoolExecutor;->submit(Ljava/lang/Runnable;)Ljava/util/concurrent/Future; move-result-object p0 :try_end_0 .catch Ljava/lang/Throwable; {:try_start_0 .. :try_end_0} :catch_0 goto :goto_0 :catch_0 move-exception p0 const-string v0, "mtopsdk.MtopSDKThreadPoolExecutorFactory" new-instance v1, Ljava/lang/StringBuilder; const-string v2, "[submitRequestTask]submit runnable to Mtop Request ThreadPool error ---" invoke-direct {v1, v2}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V invoke-virtual {p0}, Ljava/lang/Throwable;->toString()Ljava/lang/String; move-result-object p0 invoke-virtual {v1, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object p0 invoke-static {v0, p0}, Lmtopsdk/common/util/TBSdkLog;->e(Ljava/lang/String;Ljava/lang/String;)V const/4 p0, 0x0 :goto_0 return-object p0 .end method