public PriorityFutureTask<Void> submit(PriorityRunnable task) {
        if (task == null) {
            throw new NullPointerException();
        }
        final PriorityFutureTask<Void> ftask = new PriorityFutureTask(task, null);
        execute(ftask);
        return ftask;
    }
@Test
    public void testSamePriority() throws InterruptedException, ExecutionException {
        PriorityBlockingQueue<Runnable> workQueue = new PriorityBlockingQueue<Runnable>(1000);
        PriorityThreadPoolExecutor pool = new PriorityThreadPoolExecutor(1, 1, 1, TimeUnit.MINUTES, workQueue);
        sleepFlag.set(true);

        Future[] futures = new Future[10];
        StringBuffer buffer = new StringBuffer();
        for (int i = 0; i < futures.length; i++) {
            futures[i] = pool.submit(new TenSecondTask(i, 1, buffer));
        }
        sleepFlag.set(false);
        for (int i = 0; i < futures.length; i++) {
            futures[i].get();
        }
        assertEquals("01@00, 01@01, 01@02, 01@03, 01@04, 01@05, 01@06, 01@07, 01@08, 01@09, ", buffer.toString());
    }