ExecutorService
ExecutorService executor = Executors.newFixedThreadPool(MAX_THREAD); for (int n = 0; n < MAX_THREAD; n++) { executor.execute(new Runnable() { public void run() { //..... } }); } executor.shutdown(); executor.awaitTermination(300, TimeUnit.SECONDS);
Pattern, Matcher
private static final Pattern TIME_STAMP = Pattern.compile( "\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}" ); ... Matcher matcher = TIME_STAMP.matcher( line ); if ( matcher.matches() ) { return line; }
参照
private static final Pattern THREAD_HEADER = Pattern.compile( "^\"(.*)\" (daemon)? prio=\\d+ tid=\\w+ nid=\\w+ .*$" ); ... Matcher matcher = THREAD_HEADER.matcher( line ); if ( matcher.matches() ) { threadName = matcher.group( 1 ); }
コンパイラレベル の確認
javap -verbose MyClass | grep "major"
Java 1.2 uses major version 46 Java 1.3 uses major version 47 Java 1.4 uses major version 48 Java 5 uses major version 49 Java 6 uses major version 50 Java 7 uses major version 51 Java 8 uses major version 52 Java 9 uses major version 53
ParameterizedType
Get type of a generic parameter in Java with reflection - Stack Overflow
オレオレ証明書にアクセス
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
https://magicmonster.com/kb/prg/java/ssl/pkix_path_building_failed/
- JAVA_HOME/lib/security/cacerts を どこかにコピー
- Chrome で URL 開いて URLバーの "Not Secure" -> "Certificate is not valid" -> "Details" タブ -> "Export" ボタン -> der で保存 (e.g. localhost-8543-ks1.der)
- インポート
keytool -import -alias localhost-8543-ks1 -keystore /home/tkobayas/usr/work/cert-work/openjdk11-alt/cacerts -file localhost-8543-ks1.der
- システムプロパティで指定
System.setProperty("javax.net.ssl.trustStore", "/home/tkobayas/usr/work/cert-work/openjdk11-alt/cacerts");