1. 程式人生 > >JAVA執行緒的Factory類,以便自定義執行緒名

JAVA執行緒的Factory類,以便自定義執行緒名

package com.opensource;

import java.util.concurrent.ThreadFactory;
import java.util.concurrent.atomic.AtomicInteger;

/**
 * 描述:執行緒的Factory類,以便自定義執行緒名
 *
 * @author Cache John
 *
 */
public class NamedThreadFactory implements ThreadFactory
{
    static final AtomicInteger poolNumber = new AtomicInteger(1);
   
    final ThreadGroup group;
   
    final AtomicInteger threadNumber = new AtomicInteger(1);
   
    final String namePrefix;
   
    public NamedThreadFactory()
    {
        final SecurityManager s = System.getSecurityManager();
        this.group = s != null ? s.getThreadGroup() : Thread.currentThread().getThreadGroup();
        this.namePrefix = "pool-" + poolNumber.getAndIncrement() + "-thread-";
    }
   
    public NamedThreadFactory(final String name)
    {
        final SecurityManager s = System.getSecurityManager();
        this.group = s != null ? s.getThreadGroup() : Thread.currentThread().getThreadGroup();
        this.namePrefix = generateNamePrefix(name);
    }
   
    public static String generateNamePrefix(final String name)
    {
        return name + "-" + poolNumber.getAndIncrement() + "-thread-";
    }
   
    /*
     * (non-Javadoc)
     *
     * @see java.util.concurrent.ThreadFactory#newThread(java.lang.Runnable)
     */
    @Override
    public Thread newThread(final Runnable r)
    {
        // ? 潛在的問題是最後建立的這個執行緒的計數會不會超過integer的最大值
        final Thread t = new Thread(this.group, r, this.namePrefix + this.threadNumber.getAndIncrement(), 0);
        if (t.isDaemon())
        {
            t.setDaemon(false);
        }
        if (t.getPriority() != Thread.NORM_PRIORITY)
        {
            t.setPriority(Thread.NORM_PRIORITY);
        }
        return t;
    }
}

相關推薦

JAVA執行Factory以便定義執行

package com.opensource; import java.util.concurrent.ThreadFactory; import java.util.concurrent.atomi

Java併發程式設計:Java的四種執行池的使用以及定義執行工廠

目錄 引言 四種執行緒池 newCachedThreadPool:可快取的執行緒池 newFixedThreadPool:定長執行緒池 newSingleThreadExecutor:單執行緒執行緒池 newScheduledThreadPool:支援定時的定

Java的四種執行池的使用以及定義執行工廠

四種執行緒池 四種執行緒池分別是:newCachedThreadPool、newFixedThreadPool 、newScheduledThreadPool 和newSingleThreadExecutor ,下面對這幾個執行緒池一一講解。 newCachedThreadPool:可快取的執行緒

java執行工具可用該多執行同時處理相同且數量多的任務

package zrh4; public class ThreadModel {private static int maxThread = 4;protected static int currentThread = 0;private static ThreadMode

spring boot-執行Async任務時使用定義執行

一、增加配置屬性類 package com.chhliu.springboot.async.configuration; import org.springframework.boot.context.properties.ConfigurationPropertie

Java 物件流的用法定義陣列寫入檔案中

FileInputStream和FileOutputStream可以將類,陣列,等寫入如檔案並讀取。 public class UserList implements Serializable{

php 數據分頁定義多個分頁樣式

logs echo oot log 好的 num 方式 turn pre 調用分頁類的方法: // 測試分頁 public function pageTestAction() { Load::load_class(‘getPage‘,DI

[轉]DES加密和解密工具定義key

import javax.crypto.Cipher; import java.security.Key; import java.security.Security; public class DesUtils { /** * 字串預設鍵

一些通用的js工具新增定義外掛

common_t.js /** * 通用工具元件 對原有的工具進行封裝,自定義某方法統一處理<br> * ^_^ * * Author: em.D * Date: 2016-05-17 * Version: 0.0.1 */ function send_htt

實驗報告:(1)合理定義一個三角形Triangle成員屬性包括3條邊能否構成三角形的標誌;成員方法包括構造方法、修改3條邊、計算面積。 (2)寫一測試類,測試自定義三角形Triangle是否正

(1)合理定義一個三角形類Triangle,成員屬性包括3條邊,能否構成三角形的標誌;成員方法包括構造方法、修改3條邊、計算面積。(2)寫一測試類,測試自定義三角形類Triangle是否正確。class Triangle_D{ private double f_edge;

定義一個封裝矩形的長和寬;在定義一個繼承定義的這個在繼承中根據基中封裝的矩形的長和寬求矩形的面積。

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 封裝長方體 {    

執行實現方式1:定義一個繼承Thread並重寫run方法。

/** * 多執行緒實現方式1: * 自定義一個類,繼承Thread類,並重寫run方法。 * 執行緒同時執行。 * @author jiaxutianhuo * */ public cl

定義MyThread 實現Runnable介面主函式建立5個執行定義執行的建構函式輸出 建立執行X

package com.heima.gu; import java.util.HashMap; public class Test01 { /**自定義類MyThread 實現Runnabl

java中為什麼Hashtable是執行安全的而HashMap是執行不安全的?還有ArrayList為什麼是執行不安全的Vector是執行安全的??

文章目錄 一、HashMap解析 二、Hashtable解析 三、Collections.synchronizedMap()解析 四、ConcurrentHashMap 六、ArrayList為什麼是執行緒不安全的,Vector是執行緒安全的?

JAVA:HashMap常用方法對於定義的儲存原始碼分析

public static void main(String[] args) { //hashMap儲存結構為陣列+連結串列 //資料儲存方式為鍵值對 HashMap<String, Integer> hashMap = ne

通過追女孩子案例模擬Thread、Runnable介面、定義執行之間的關係

我們知道,在Thread類、Runnable介面、自定義執行緒類之間實現了靜態代理的設計模式,以下進行簡單的模擬,方便我們對執行緒和靜態代理的一個更加具象的認識。 被人追介面beiRenZhui(Runnable): /* * 本介面是被人追介面,每一個女孩子都有被人追的特性, * 所以

Java執行 定義執行輔助

之前的文章我介紹了C#版本的多執行緒和自定義執行緒處理器。 接下來我們來看看Java版本的呢 java 的執行緒和C#的執行緒有點區別,java的執行緒沒有是否是後臺執行緒一說,具體原因是java的執行緒是jvm的c++程式碼模擬執行緒,而C#的執行緒也是C++模擬執行緒。但是區別在於C#的執行緒會基於系

看我是如何處理定義執行模型---java

看過我之前文章的園友可能知道我是做遊戲開發,我的很多思路和出發點是按照遊戲思路來處理的,所以和web的話可能會有衝突,不相符合。 來說說為啥我要自定義執行緒模型呢? 按照我做的mmorpg或者mmoarpg遊戲劃分,執行緒被劃分為,主執行緒,全域性同步執行緒,聊天執行緒,組隊執行緒,地圖執行緒,以及地圖訊

java實現三個執行A B C,A執行列印A之後才能B執行列印B然後接著C執行執行列印C,繼而迴圈下去

最近看到有人提問這個問題,而且好多人又是轉載的,寫了一大堆,看的我頭都大了。於是自己做了個小程式輕鬆解決。 附上程式碼: package pcitc; import java.util.concurrent.locks.Lock; import java.util.conc

Java併發程式設計中四種執行池及定義執行使用教程

引言 通過前面的文章,我們學習了Executor框架中的核心類ThreadPoolExecutor ,對於執行緒池的核心排程機制有了一定的瞭解,並且成功使用ThreadPoolExecutor 建立了執行緒池。 而在Java中,除了ThreadPoolExecutor ,Executor框