import java.io.FilePermission;
import java.security.AccessController;
import java.util.concurrent.ForkJoinPool;
import java.util.concurrent.ForkJoinWorkerThread;
import java.util.concurrent.RecursiveTask;

public class Test {

    static void testPermission() {
        AccessController.checkPermission(new FilePermission(System.getProperty("java.class.path")+"/a", "read"));
    }

    public static void main(String[] args){
        testPermission();

        ForkJoinPool pool = new ForkJoinPool(1,
                new ForkJoinPool.ForkJoinWorkerThreadFactory() {
                    @Override
                    public ForkJoinWorkerThread newThread(ForkJoinPool forkJoinPool) {
                        return new ForkJoinWorkerThread(forkJoinPool) {
                            @Override
                            public void run() {
                                testPermission();
                                super.run();
                            }
                        };
                    }
                },
                null, false);

        pool.invoke(new RecursiveTask<Object>() {
            @Override
            protected Object compute() {
                System.out.println("done");
                return null;
            }
        });

        pool.shutdown();
    }
}
