February 2, 2024
By: Kevin

Java的方便函数

  1. 获得一个空闲的端口号
  2. Java获得IP和主机名称
  3. Java获得JVM的线程数
  4. Java获得当前threa-id/name
  5. Java获取当前进程id
  6. Java为线程设置异常处理
  7. Java的全部设置变量查看
  8. Java的环境变量
  9. Java查看环境变量中的PATH
  10. Java的临时目录
  11. os 名称, java version, 用户目录
  12. UUID

获得一个空闲的端口号

(import '[java.net ServerSocket])
(defn find-open-port
  []
  ;; prot 0 的意思就是从空闲端口中拿到一个
  (with-open [socket (ServerSocket. 0)]
    (.getLocalPort socket)))

(find-open-port)

Java获得IP和主机名称

(import java.net.InetAddress)
(.getHostName (InetAddress/getLocalHost))
;; => "Kevins-MacBook-Pro.local"
(.getHostAddress (InetAddress/getLocalHost))
;; => "192.168.31.66"

Java获得JVM的线程数

(Thread/activeCount)

Java获得当前threa-id/name

(.getName (Thread/currentThread))
(.getId (Thread/currentThread))

Java获取当前进程id


;; java <= 8
(import 'java.lang.management.ManagementFactory)
;; <pid>@<pc-name>
(let [[_ pid hostname]
      (re-find #"^(\d+)@(.*)"
               (.getName (ManagementFactory/getRuntimeMXBean)))]
  pid)

;; java >= 9

(import 'java.lang.ProcessHandle)
(.pid (ProcessHandle/current))
;; => 56288

Java为线程设置异常处理

(Thread/setDefaultUncaughtExceptionHandler
 (reify Thread$UncaughtExceptionHandler
   (uncaughtException [_ thread ex]
     (log/error {:what :uncaught-exception
                 :exception ex
                 :where (str "Uncaught exception on" (.getName thread))}))))

Java的全部设置变量查看

java -XshowSettings

Java的环境变量

(System/getenv)

Java查看环境变量中的PATH

(System/getenv "PATH")

Java的临时目录

(System/getProperty "java.io.tmpdir")

os 名称, java version, 用户目录

(System/getProperties)
(System/getProperty "os.name")
(System/getProperty "java.runtime.version" )
(System/getProperty "user.dir")
(System/getProperty "user.name")

UUID

(java.util.UUID/randomUUID)
Tags: clojure java