Files
KLALB/src/org/kne/cloud/network/ThreadTool.java
T

115 lines
3.8 KiB
Java

package org.kne.cloud.network;
import java.lang.reflect.Method;
public class ThreadTool {
public static boolean forceD=true;
public static boolean first=true;
public static Thread makeVThreadIfSupport(String name,Runnable r) {
if(forceD)
return new Thread(r, name);
try { //return new Thread(r, name);
Class<?> c=Class.forName("java.lang.Thread");
Method m= c.getDeclaredMethod("ofVirtual", null);
Object o=m.invoke(null, null);
Class<?> cb=Class.forName("java.lang.Thread$Builder");
Method mn= cb.getDeclaredMethod("name", String.class);
mn.invoke(o, name);
Method mu= cb.getDeclaredMethod("unstarted", Runnable.class);
return (Thread) mu.invoke(o, r);
//return Thread.ofVirtual().name(name).unstarted(r);
}catch(Throwable e) {
//e.printStackTrace();
if(first) {
System.out.println("提示:请使用java21以上版本以提高本软件的数据转发性能!");
first=false;
}
return new Thread(r, name);
}
}
public static Thread makeVDaemonThreadIfSupport(String name,Runnable r) {
if(forceD) {
Thread rt=new Thread(r, name);
rt.setDaemon(true);
return rt;
}
try { //return new Thread(r, name);
Class<?> c=Class.forName("java.lang.Thread");
Method m= c.getDeclaredMethod("ofVirtual", null);
Object o=m.invoke(null, null);
Class<?> cb=Class.forName("java.lang.Thread$Builder");
Method mn= cb.getDeclaredMethod("name", String.class);
mn.invoke(o, name);
Method mu= cb.getDeclaredMethod("unstarted", Runnable.class);
return (Thread) mu.invoke(o, r);
//return Thread.ofVirtual().name(name).unstarted(r);
}catch(Throwable e) {
//e.printStackTrace();
if(first) {
System.out.println("提示:请使用java21以上版本以提高本软件的数据转发性能!");
first=false;
}
Thread rt=new Thread(r, name);
rt.setDaemon(true);
return rt;
}
}
public static Thread makePThreadIfSupport(String name, Runnable r) {
Thread rt=new Thread(r, name);
return rt;
}
public static Thread makePDaemonThreadIfSupport(String name, Runnable r) {
Thread rt=new Thread(r, name);
rt.setDaemon(true);
return rt;
}
public static Thread makeVDaemonThread(String name, Runnable r) {
if(false)
return new Thread(r, name);
try {
Class<?> c=Class.forName("java.lang.Thread");
Method m= c.getDeclaredMethod("ofVirtual", null);
Object o=m.invoke(null, null);
Class<?> cb=Class.forName("java.lang.Thread$Builder");
Method mn= cb.getDeclaredMethod("name", String.class);
mn.invoke(o, name);
Method mu= cb.getDeclaredMethod("unstarted", Runnable.class);
return (Thread) mu.invoke(o, r);
//return Thread.ofVirtual().name(name).unstarted(r);
}catch(Throwable e) {
//e.printStackTrace();
if(first) {
System.out.println("提示:请使用java21以上版本以提高本软件的数据转发性能!");
first=false;
}
Thread rt=new Thread(r, name);
rt.setDaemon(true);
return rt;
}
}
public static Thread makeVThread(String name, Runnable r) {
if(false)
return new Thread(r, name);
try { //return new Thread(r, name);
Class<?> c=Class.forName("java.lang.Thread");
Method m= c.getDeclaredMethod("ofVirtual", null);
Object o=m.invoke(null, null);
Class<?> cb=Class.forName("java.lang.Thread$Builder");
Method mn= cb.getDeclaredMethod("name", String.class);
mn.invoke(o, name);
Method mu= cb.getDeclaredMethod("unstarted", Runnable.class);
return (Thread) mu.invoke(o, r);
//return Thread.ofVirtual().name(name).unstarted(r);
}catch(Throwable e) {
//e.printStackTrace();
if(first) {
System.out.println("提示:请使用java21以上版本以提高本软件的数据转发性能!");
first=false;
}
return new Thread(r, name);
}
}
}