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優化的通用