Switch-vov commented on a change in pull request #52:
URL: 
https://github.com/apache/skywalking-data-collect-protocol/pull/52#discussion_r662866375



##########
File path: language-agent/JVMMetric.proto
##########
@@ -85,8 +86,22 @@ enum GCPhrase {
 }
 
 message Thread {
-  int64 liveCount = 1;
-  int64 daemonCount = 2;
-  int64 peakCount = 3;
+    int64 liveCount = 1;
+    int64 daemonCount = 2;
+    int64 peakCount = 3;
+    int64 deadlockedCount = 4;
+    int64 monitorDeadlockedCount = 5;
+    int64 newStateThreadCount = 6;
+    int64 runnableStateThreadCount = 7;
+    int64 blockedStateThreadCount = 8;
+    int64 waitingStateThreadCount = 9;
+    int64 timedWaitingStateThreadCount = 10;
+    int64 terminatedStateThreadCount = 11;

Review comment:
       My implemention.
   
   ```java
   public enum ThreadProvider {
       INSTANCE;
       private final ThreadMXBean threadMXBean;
   
       ThreadProvider() {
           this.threadMXBean = ManagementFactory.getThreadMXBean();
       }
   
       public Thread getThreadMetrics() {
           int newThreadCount = 0;
           int runnableThreadCount = 0;
           int blockedThreadCount = 0;
           int waitThreadCount = 0;
           int timeWaitThreadCount = 0;
           int terminatedThreadCount = 0;
   
           ThreadInfo[] threadInfos = 
threadMXBean.getThreadInfo(threadMXBean.getAllThreadIds());
           if (threadInfos != null) {
               for (ThreadInfo threadInfo : threadInfos) {
                   if (threadInfo != null) {
                       switch (threadInfo.getThreadState()) {
                           case NEW:
                               newThreadCount++;
                               break;
                           case RUNNABLE:
                               runnableThreadCount++;
                               break;
                           case BLOCKED:
                               blockedThreadCount++;
                               break;
                           case WAITING:
                               waitThreadCount++;
                               break;
                           case TIMED_WAITING:
                               timeWaitThreadCount++;
                               break;
                           case TERMINATED:
                               terminatedThreadCount++;
                               break;
                           default:
                               break;
                       }
                   } else {
                       terminatedThreadCount++;
                   }
               }
           }
   
           int threadCount = threadMXBean.getThreadCount();
           int daemonThreadCount = threadMXBean.getDaemonThreadCount();
           int peakThreadCount = threadMXBean.getPeakThreadCount();
           int deadlocked = threadMXBean.findDeadlockedThreads() != null ? 
threadMXBean.findDeadlockedThreads().length : 0;
           int monitorDeadlocked = threadMXBean.findMonitorDeadlockedThreads() 
!= null ?
                   threadMXBean.findMonitorDeadlockedThreads().length : 0;
           return Thread.newBuilder().setLiveCount(threadCount)
                   .setDaemonCount(daemonThreadCount)
                   .setPeakCount(peakThreadCount)
                   .setDeadlocked(deadlocked)
                   .setMonitorDeadlocked(monitorDeadlocked)
                   .setNewThreadCount(newThreadCount)
                   .setRunnableThreadCount(runnableThreadCount)
                   .setBlockedThreadCount(blockedThreadCount)
                   .setWaitThreadCount(waitThreadCount)
                   .setTimeWaitThreadCount(timeWaitThreadCount)
                   .setTerminatedThreadCount(terminatedThreadCount)
                   .build();
       }
   
   }
   ```




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to