Java備忘録

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

https://stackoverflow.com/questions/1096148/how-to-check-the-jdk-version-used-to-compile-a-class-file

オレオレ証明書にアクセス

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");