1. 程式人生 > >netty NioEventLoopGroup 執行緒名稱設定

netty NioEventLoopGroup 執行緒名稱設定

在初始化workergroup的時候

如果不指定ThreadFactory,那麼將使用netty預設的ThreadFactory DefaultThreadFactory

比如在日誌輸出的可以看出執行緒名稱是

2017 一月 11 16:34:40.420 [nioEventLoopGroup-3-1] INFO  c.z.e.netty.handler.DownloadHandler - nioEventLoopGroup-3-1

nioEventLoopGroup-3-1

prefix = poolName + '-' + poolId.incrementAndGet() + '-';

Thread t = newThread(new DefaultRunnableDecorator(r), prefix + nextId.incrementAndGet());

由3部分組成

poolname 例如 nioEventLoopGroup

然後-poolid

然後是-執行緒id

可以自定義自己的ThreadFactory

package com.zheyue.encrypt.concurrency;

import org.apache.commons.lang3.StringUtils;

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

/**
 * @author FD
 * @date 2017/1/11
 */
public class NamedThreadFactory implements ThreadFactory {

    private static final AtomicInteger threadNumber = new AtomicInteger(1);

    private final AtomicInteger mThreadNum = new AtomicInteger(1);

    private final String prefix;

    private final boolean daemonThread;

    private final ThreadGroup threadGroup;

    public NamedThreadFactory() {
        this("fileServer-threadPool-" + threadNumber.getAndIncrement(), false);
    }

    public NamedThreadFactory(String prefix) {
        this(prefix, false);
    }

    public NamedThreadFactory(String prefix, boolean daemon) {
        this.prefix = StringUtils.isNotEmpty(prefix) ? prefix + "-thread-" : "";
        daemonThread = daemon;
        SecurityManager s = System.getSecurityManager();
        threadGroup = (s == null) ? Thread.currentThread().getThreadGroup() : s.getThreadGroup();
    }

    public Thread newThread(Runnable runnable) {
        String name = prefix + mThreadNum.getAndIncrement();
//        Thread ret = new Thread(threadGroup, runnable, name, 0);
        Thread ret = new Thread(threadGroup, runnable, name);
        ret.setDaemon(daemonThread);
        return ret;
    }

    public ThreadGroup getThreadGroup() {
        return threadGroup;
    }
}

另外java 使用executors.newXXX 方法建立的執行緒池 也會使用java預設的執行緒工廠 比如pool-2-thread-1

spring框架也會使用executors.newXXX建立執行緒池,所以上面是2

相關推薦

netty NioEventLoopGroup 執行名稱設定

在初始化workergroup的時候 如果不指定ThreadFactory,那麼將使用netty預設的ThreadFactory DefaultThreadFactory 比如在日誌輸出的可以看出執行緒名稱是 2017 一月 11 16:34:40.420 [nioEven

netty實戰之百萬級流量NioEventLoopGroup執行數配置

編寫netty服務端程式的時候,會使用到兩個執行緒組 EventLoopGroup parentGroup = new NioEventLoopGroup(); EventLoopGroup childGroup = new NioEventL

基礎篇_執行 第 2 集 設定執行名稱兩種方法:setName或者建構函式

練習1:建立兩個執行緒,和主執行緒交替執行。原來執行緒都有自己預設的名稱Thread——編號 該編號從0開始currentThread():獲取當前執行緒物件。getName():獲取執行緒名稱。設定執行緒名稱:setName或者建構函式。 class Test ext

跨平臺(linux/win)啟動執行, 並設定執行名稱(便於除錯)

#ifndef THREAD_H #define THREAD_H #include <string> #include <iostream> #ifdef WIN32 #else #include <pthread.h> #endif using namespac

netty執行池-----揭示了使用兩個執行池的原因

執行緒模型是Netty的核心設計,設計地很巧妙,之前專案中有一塊處理併發的設計和Netty的Eventloop單執行緒設計類似,效果得到了實證。   Netty5的類層次結構和之前的版本變化很大,網上也有很多文章寫Netty的執行緒模型,Reactor模式,比如這篇http://blog.csd

建立、執行執行設定執行屬性

建立、執行執行緒,設定執行緒屬性 準備工作 實現過程 工作原理 擴充套件學習 更多關注 在本節中,學習使用Java API來進行執行緒的基本操作。正如Java語言中的每個元素一樣,執行緒是物件,在Java中有兩種方式建立一個執行緒。

java 使用匿名內部類的方式建立執行設定和獲取執行名字

有些方法需要傳入介面的例項或者抽象類的例項物件,比如Thread有一個構造方法,Thread(Runnable target) 這時可以可以自定義類實現Runnable介面,重寫介面中的方法,將自定義類的物件傳入構造方法中 也可以使用匿名內部類,即在建立Thread物件時傳入Runnable

執行屬性設定簡例

#include <stdio.h> #include <pthread.h> #include <string.h> #include <stdlib.h> int print_ntimes(char *str) { sleep(1);

執行設定技巧——與CPU的關係

1、簡化設定 一般說來,執行緒池的大小可以這樣設定: 1、如果是CPU密集型應用,則執行緒池大小設定為N+1 2、如果是IO密集型應用,則執行緒池大小設定為2N+1(因為io讀資料或者快取的時候,執行緒等待,此時如果多開執行緒,能有效提高cpu利用率) (其中N為CPU的個數)

Jmeter執行設定及定時啟動任務

Ramp-up Period(in seconds) 【1】決定多長時間啟動所有執行緒。如果使用10個執行緒,ramp-up period是100秒,那麼JMeter用100秒使所有10個執行緒啟動並執行。每個執行緒會在上一個執行緒啟動後10秒(100/10)啟動。Ramp-up需要

Jmeter執行設定

左側樹形標籤欄中,顯示標籤資訊。 選中執行緒組,右側內容欄中顯示執行緒組的相關資訊。 名稱:可以給執行緒組設定一個個性化的命名,注意儘量不要使用中文(測試計劃也是),在linux上通過no-gui模式執行時可能會找不到對應的測試計劃或執行緒組。 註釋:可以對執行緒組新增備註以標記 在取樣器錯誤後要

修改執行名稱,並在VC偵錯程式中顯示

#define MS_VC_EXCEPTION 0x406d1388typedef struct tagTHREADNAME_INFO{ DWORD dwType; // must be 0x1000 LPCSTR szName; // pointer to na

深入研究Netty執行模型詳解

https://my.oschina.net/7001/blog/1480153 本文主要介紹Netty執行緒模型及其實現,介紹Netty執行緒模型前,首先會介紹下經典的Reactor執行緒模型,目前大多數網路框架都是基於Reactor模式進行設計和開發,Reactor模式基於事件驅動,非常適合

Netty IO執行模型學習總結

Netty框架的 主要執行緒是IO執行緒,執行緒模型的好壞直接決定了系統的吞吐量、併發性和安全性。 Netty的執行緒模型遵循了Reactor的基礎執行緒模型。下面我們先一起看下該模型 Reactor執行緒模型 Reactor 單執行緒模型 單執行緒模型中所有

Github專案NettyRpc 閱讀(Netty+多執行+AQS+CAS+volatile)

Github專案:https://github.com/luxiaoxun/NettyRpc Fork: https://github.com/sw008/NettyRpc 此專案很適合學習多執行緒和Netty RPC呼叫流程 大體思路:客戶端通過ConcurrentHas

JavaSocket程式設計之Netty框架執行模型

1.Netty概述     Netty是一個由JBoss提供的高效的Java NIO client-server(客戶端-伺服器)開發框架,使用Netty可以快速開發網路應用。Netty提供了一種新的方式來使開發網路應用程式,使其很容易使用且有很強的可擴充套件性。Netty的內部實現是很複雜的,但是

linux多執行學習(三)——執行屬性設定

在上一篇文章中,介紹了執行緒的建立和退出,以及相關函式的使用。其中pthread_create函式的第二個引數,是關於執行緒屬性的設定,這也是今天所有講述的。這些屬性主要包括邦定屬性、分離屬性、堆疊地址、堆疊大小、優先順序。其中系統預設的是非邦定、非分離、預設1M的堆疊、與父

ThreadPoolExecutor中執行執行名稱的修改

專案中使用到了ThreadPoolExecutor,這個是挺好的東西,執行緒池的實現。但有一點不太爽的是,用Jprofiler除錯由它建立的執行緒的時候,看到的都是pool-1-thread-1\2\3\4之類的。這是它自身的預設規則產生的,pool代表這是池,-1-代表是

Android 執行優先順序設定方法

http://www.cnblogs.com/liulipeng/archive/2013/02/25/2932572.html 對於Android平臺上的執行緒優先順序設定來說可以處理很多併發執

效能測試之tomcat執行設定原理

該設定多大的執行緒池呢?以及根據什麼原則來設計這個執行緒池呢?   思路:   tomcat接受一個request後處理過程中,會涉及到cpu和IO時間。其中IO等待時間,cpu被動放棄執行,其他執行緒就可以利用這段時間片進行操作。所以我們可以採用伺服器IO優化的通用