zoukankan      html  css  js  c++  java
  • 并发集合

      当需要在并发程序中使用数据集合时,必须要谨慎地选择相应的实现方式。大多数集合类不能直接用于并发应用,因为它们没有对本身数据的并发访问进行控制。如果一些并发任务共享了一个不适用于并发任务的数据结构,将会遇到数据不一致的错误,并将影响程序的准确运行。这类数据结构的一个例子是ArrayList类。

      Java提供了一些可以用于并发程序中的数据集合,它们不会引起任何问题。一般来说,Java提供了两类适用于并发应用的集合。

    • 阻塞式集合(Blocking Collection):这类集合包括添加和移除数据的方法。当集合已满或为空时,被调用的添加或者移除方法就不能立即被执行,那么调用这个方法的线程将被阻塞,一直到该方法可以被成功执行。
    • 非阻塞式集合(Non-Blocking Collection):这类集合也包括添加和移除数据的方法。如果方法不能立即执行,则返回null或抛出异常,但是调用这个方法的线程不会被阻塞。

      通过本节的学习,我们将学会如何在并发应用中使用一些Java集合。

    • 非阻塞式列表对应的实现类:ConcurrentLinkedDeque类;
    • 阻塞式列表对应的实现类:LinkedBlockingDeque类;
    • 用于数据生成或消费的阻塞式列表对应的实现类:LinkedTransferQueue类;
    • 按优先级排序列表元素的阻塞式列表对应的实现类:PriorityBlockingQueue类;
    • 带有延迟列表元素的阻塞式列表对应的实现类:DelayQueue类;
    • 非阻塞式可遍历映射对应的实现类:ConcurrentSkipListMap类;
    • 随机数字对应的实现类:ThreadLocalRandom类;
    • 原子变量对应的实现类:AtomicLong和AtomicIntegerArray类。

    1. 使用非阻塞式线程安全列表

      并发列表允许不同的线程在同一时间添加或者移除列表中的元素,而不会造成数据的不一致。

      在本节,将会学到如何在并发程序中使用非阻塞式列表。非阻塞式列表提供了一些操作。如果被执行的操作不能立即运行(例如,在列表为空时,从列表中取出一个元素),方法会抛出异常或者返回null。Java7引入了ConcurrentLinkedDeque类来实现非阻塞式并发列表。

      将要实现的范例包含以下两个不同的任务:

    • 添加大量的数据到一个列表中;
    • 从同一个列表中移除大量的数据。

    1. 创建一个名为AddTask的类,实现Runnable接口。

    import java.util.concurrent.ConcurrentLinkedDeque;
    
    public class AddTask implements Runnable {
        private ConcurrentLinkedDeque<String> list;
        
        public AddTask(ConcurrentLinkedDeque<String> list){
            this.list = list;
        }
        
        @Override
        public void run() {
            String name = Thread.currentThread().getName();
            for(int i=0;i<10000;i++){
                list.add(name+": Element "+i);
            }
        }
    
    }

    2. 创建名为PoolTask的类,并实现Runnable接口。

    import java.util.concurrent.ConcurrentLinkedDeque;
    
    public class PollTask implements Runnable {
        private ConcurrentLinkedDeque<String> list;
        
        public PollTask(ConcurrentLinkedDeque<String> list){
            this.list = list;
        }
        
        @Override
        public void run() {
            for(int i=0;i<5000;i++){
                list.pollFirst();
                list.pollLast();
            }
        }
    
    }

    3. 实现范例的主类Main,并添加main()方法。

    import java.util.concurrent.ConcurrentLinkedDeque;
    import java.util.concurrent.ForkJoinPool;
    import java.util.concurrent.TimeUnit;
    
    public class Main {
    
        public static void main(String[] args) {    
            ConcurrentLinkedDeque<String> list = new ConcurrentLinkedDeque<>();
            //创建线程数组threads,它包含100个线程
            Thread[] threads = new Thread[100];
            for(int i=0;i<threads.length;i++){
                AddTask task = new AddTask(list);
                threads[i] = new Thread(task);
                threads[i].start();
            }
            System.out.printf("Main: %d AddTask threads have been launched
    ", threads.length);
            //使用join()方法等待线程完成
            try {
                for(int i=0;i<threads.length;i++){
                    threads[i].join();
                }
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            System.out.printf("Main: Size of the List: %d
    ", list.size());
            //创建100个PollTask对象及其对应的线程
            for(int i=0;i<threads.length;i++){
                PollTask task = new PollTask(list);
                threads[i] = new Thread(task);
                threads[i].start();
            }
            System.out.printf("Main: %d PollTask threads have been launched
    ", threads.length);
            //使用join()方法等待线程完成
            try {
                for(int i=0;i<threads.length;i++){
                    threads[i].join();
                }
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            System.out.printf("Main: Size of the List: %d
    ", list.size());
        }
    }

    4. 程序运行结果如下

    Main: 100 AddTask threads have been launched
    Main: Size of the List: 1000000
    Main: 100 PollTask threads have been launched
    Main: Size of the List: 0

      使用size()方法输出列表中的元素数量。需要注意的是,这个方法返回的值可能不是真实的,尤其当有线程在添加数据或者移除数据时,这个方法需要遍历整个列表来计算元素数量,而遍历过的数据可能已经改变。仅当没有任何线程修改列表时,才能保证返回的结果是准确的。

    2. 使用阻塞式线程安全列表

      并发列表允许不同的线程在同一时间添加或者移除列表中的元素,而不会造成数据的不一致。

      在本节,你会学会如何在并发程序中使用阻塞式列表。阻塞式列表与非阻塞式列表的主要差别是:阻塞式列表在插入和删除操作时,如果列表已满或为空,操作不会立即执行,而是将调用这个操作的线程阻塞,直到操作可以执行成功。Java引入了LinkedBlockingDeque类来实现阻塞式列表。

      将要实现的范例包括以下两个不同的任务:

    • 添加数据到一个列表中;
    • 从一个列表中移除数据。

    1. 创建名为Client的类,并实现Runnable接口。

    import java.util.Date;
    import java.util.concurrent.LinkedBlockingDeque;
    import java.util.concurrent.TimeUnit;
    
    
    public class Client implements Runnable {
        private LinkedBlockingDeque<String> requestList;
        
        public Client(LinkedBlockingDeque<String> requestList){
            this.requestList = requestList;
        }
        
        @Override
        public void run() {
            try {
                for(int i=0;i<3;i++){
                    for(int j=0;j<5;j++){
                        StringBuilder sb = new StringBuilder();
                        sb.append(i);
                        sb.append(":");
                        sb.append(j);
                        requestList.put(sb.toString());
                        System.out.printf("Client: %s at %s.
    ", sb.toString(), new Date());
                    }
                    TimeUnit.SECONDS.sleep(2);
                }
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            System.out.println("Client: End
    ");
        }
    
    }

    2. 创建范例的主类Main,并添加main()方法。

    import java.util.Date;
    import java.util.concurrent.LinkedBlockingDeque;
    
    public class Main {
    
        public static void main(String[] args) {
            //指定固定容量
            LinkedBlockingDeque<String> list = new LinkedBlockingDeque<String>(3);
            Client client = new Client(list);
            Thread thread = new Thread(client);
            thread.start();
            try {
                for(int i=0;i<5;i++){
                    for(int j=0;j<3;j++){
                        String request = list.take();
                        System.out.printf("Main: Request: %s at %s. Size: %d
    ", request, new Date(), list.size());
                    }
                    Thread.sleep(300);
                }
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            System.out.println("Main: End of the program.");
        }
    }

    3. 程序运行结果如下

    Client: 0:0 at Tue Oct 27 14:43:03 CST 2015.
    Main: Request: 0:0 at Tue Oct 27 14:43:03 CST 2015. Size: 0
    Main: Request: 0:1 at Tue Oct 27 14:43:03 CST 2015. Size: 0
    Client: 0:1 at Tue Oct 27 14:43:03 CST 2015.
    Main: Request: 0:2 at Tue Oct 27 14:43:03 CST 2015. Size: 0
    Client: 0:2 at Tue Oct 27 14:43:03 CST 2015.
    Client: 0:3 at Tue Oct 27 14:43:03 CST 2015.
    Client: 0:4 at Tue Oct 27 14:43:03 CST 2015.
    Main: Request: 0:3 at Tue Oct 27 14:43:03 CST 2015. Size: 1
    Main: Request: 0:4 at Tue Oct 27 14:43:03 CST 2015. Size: 0
    Client: 1:0 at Tue Oct 27 14:43:05 CST 2015.
    Client: 1:1 at Tue Oct 27 14:43:05 CST 2015.
    Client: 1:2 at Tue Oct 27 14:43:05 CST 2015.
    Client: 1:3 at Tue Oct 27 14:43:05 CST 2015.
    Main: Request: 1:0 at Tue Oct 27 14:43:05 CST 2015. Size: 0
    Main: Request: 1:1 at Tue Oct 27 14:43:05 CST 2015. Size: 2
    Client: 1:4 at Tue Oct 27 14:43:05 CST 2015.
    Main: Request: 1:2 at Tue Oct 27 14:43:05 CST 2015. Size: 2
    Main: Request: 1:3 at Tue Oct 27 14:43:05 CST 2015. Size: 1
    Main: Request: 1:4 at Tue Oct 27 14:43:05 CST 2015. Size: 0
    Client: 2:0 at Tue Oct 27 14:43:07 CST 2015.
    Client: 2:1 at Tue Oct 27 14:43:07 CST 2015.
    Client: 2:2 at Tue Oct 27 14:43:07 CST 2015.
    Client: 2:3 at Tue Oct 27 14:43:07 CST 2015.
    Main: Request: 2:0 at Tue Oct 27 14:43:07 CST 2015. Size: 0
    Main: Request: 2:1 at Tue Oct 27 14:43:07 CST 2015. Size: 2
    Client: 2:4 at Tue Oct 27 14:43:07 CST 2015.
    Main: Request: 2:2 at Tue Oct 27 14:43:07 CST 2015. Size: 2
    Main: Request: 2:3 at Tue Oct 27 14:43:07 CST 2015. Size: 1
    Main: Request: 2:4 at Tue Oct 27 14:43:07 CST 2015. Size: 0
    Main: End of the program.
    Client: End
    View Code

    3. 使用按优先级排序的阻塞式线程安全列表

      数据结构应用中的一个经典需求是实现一个有序列表。Java引入了PriorityBlockingQueue类来满足这类需求。

      所有添加进PriorityBlockingQueue的元素必须实现Comparable接口。这个接口提供了compareTo()方法,它的传入参数是一个同类型的对象。这样就有了两个同类型的对象并且相互比较:其中一个是执行这个方法的对象,另一个是参数传入的对象。这个方法必须返回一个数字值,如果当前对象小于参数传入的对象,那么返回一个小于0的值;如果当前对象大于参数传入的对象,那么返回一个大于0的值;如果两个对象相等就返回0。

      当插入元素时,PriorityBlockingQueue使用compareTo()方法来决定插入元素的位置。元素越大越靠后。

      PriorityBlockingQueue的另一个重要特性是:它是阻塞式数据结构(BlockingDataStructure)。当它的方法被调用并且不能立即执行时,调用这个方法的线程将被阻塞知道方法执行成功。

      在本节,我们将学习如何使用PriorityBlockingQueue类。在范例中我们将大量不同优先级的事件存放到同一个列表中,并且检查队列是否按预期排序。

    1. 创建名为Event的类并实现Comparable接口,指定Comparable接口的泛型参数是Event类。

    public class Event implements Comparable<Event>{
        private int thread; //存放创建了Event的线程
        private int priority;
        
        public Event(int thread, int priority){
            this.thread = thread;
            this.priority = priority;
        }
        
        @Override
        public int compareTo(Event o) {
            if(this.priority>o.priority)
                return -1;
            if(this.priority<o.priority)
                return 1;
            return 0;
        }
    
        public int getThread() {
            return thread;
        }
    
        public int getPriority() {
            return priority;
        }
        
        
    }

    2. 创建一个名为Task的类,实现Runnable接口。

    import java.util.concurrent.PriorityBlockingQueue;
    
    
    public class Task implements Runnable {
        private int id;
        private PriorityBlockingQueue<Event> queue;
        
        public Task(int id, PriorityBlockingQueue<Event> queue){
            this.id = id;
            this.queue = queue;
        }
        
        @Override
        public void run() {
            for(int i=0;i<1000;i++){
                Event event = new Event(id, i);
                queue.add(event);
            }        
        }
        
        
    }

    3. 创建范例的主类Main,并实现main()方法。

    import java.util.concurrent.PriorityBlockingQueue;
    
    public class Main {
    
        public static void main(String[] args) {
            PriorityBlockingQueue<Event> queue = new PriorityBlockingQueue<>();
            Thread taskThreads[] = new Thread[5];
            for(int i=0;i<taskThreads.length;i++){
                Task task = new Task(i, queue);
                taskThreads[i] = new Thread(task);
            }
            //启动线程
            for(int i=0;i<taskThreads.length;i++){
                taskThreads[i].start();
            }
            //等待线程执行结束
            try {
                for(int i=0;i<taskThreads.length;i++){
                    taskThreads[i].join();
                }
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            System.out.printf("Main: Queue Size: %d
    ", queue.size());
            for(int i=0;i<taskThreads.length*1000;i++){
                Event event = queue.poll();
                System.out.printf("Thread %s: Priority %d
    ", event.getThread(), event.getPriority());
            }
            System.out.printf("Main: Queue Size: %d
    ", queue.size());
            System.out.println("Main: End of the program.");
        }
    }

    4. 程序运行结果如下

    Main: Queue Size: 5000
    Thread 0: Priority 999
    Thread 4: Priority 999
    Thread 2: Priority 999
    Thread 3: Priority 999
    Thread 1: Priority 999
    Thread 2: Priority 998
    Thread 3: Priority 998
    Thread 0: Priority 998
    Thread 4: Priority 998
    Thread 1: Priority 998
    Thread 0: Priority 997
    Thread 2: Priority 997
    Thread 3: Priority 997
    Thread 4: Priority 997
    Thread 1: Priority 997
    Thread 0: Priority 996
    Thread 2: Priority 996
    Thread 3: Priority 996
    Thread 4: Priority 996
    Thread 1: Priority 996
    Thread 0: Priority 995
    Thread 2: Priority 995
    Thread 3: Priority 995
    Thread 4: Priority 995
    Thread 1: Priority 995
    Thread 0: Priority 994
    Thread 2: Priority 994
    Thread 3: Priority 994
    Thread 4: Priority 994
    Thread 1: Priority 994
    Thread 0: Priority 993
    Thread 2: Priority 993
    Thread 3: Priority 993
    Thread 4: Priority 993
    Thread 1: Priority 993
    Thread 0: Priority 992
    Thread 2: Priority 992
    Thread 3: Priority 992
    Thread 4: Priority 992
    Thread 1: Priority 992
    Thread 0: Priority 991
    Thread 2: Priority 991
    Thread 3: Priority 991
    Thread 4: Priority 991
    Thread 1: Priority 991
    Thread 0: Priority 990
    Thread 2: Priority 990
    Thread 3: Priority 990
    Thread 4: Priority 990
    Thread 1: Priority 990
    Thread 0: Priority 989
    Thread 2: Priority 989
    Thread 3: Priority 989
    Thread 4: Priority 989
    Thread 1: Priority 989
    Thread 0: Priority 988
    Thread 2: Priority 988
    Thread 3: Priority 988
    Thread 4: Priority 988
    Thread 1: Priority 988
    Thread 0: Priority 987
    Thread 2: Priority 987
    Thread 3: Priority 987
    Thread 4: Priority 987
    Thread 1: Priority 987
    Thread 0: Priority 986
    Thread 2: Priority 986
    Thread 3: Priority 986
    Thread 4: Priority 986
    Thread 1: Priority 986
    Thread 0: Priority 985
    Thread 2: Priority 985
    Thread 3: Priority 985
    Thread 4: Priority 985
    Thread 1: Priority 985
    Thread 0: Priority 984
    Thread 2: Priority 984
    Thread 3: Priority 984
    Thread 4: Priority 984
    Thread 1: Priority 984
    Thread 0: Priority 983
    Thread 2: Priority 983
    Thread 3: Priority 983
    Thread 4: Priority 983
    Thread 1: Priority 983
    Thread 0: Priority 982
    Thread 2: Priority 982
    Thread 3: Priority 982
    Thread 4: Priority 982
    Thread 1: Priority 982
    Thread 0: Priority 981
    Thread 2: Priority 981
    Thread 3: Priority 981
    Thread 4: Priority 981
    Thread 1: Priority 981
    Thread 0: Priority 980
    Thread 2: Priority 980
    Thread 3: Priority 980
    Thread 4: Priority 980
    Thread 1: Priority 980
    Thread 0: Priority 979
    Thread 2: Priority 979
    Thread 3: Priority 979
    Thread 4: Priority 979
    Thread 1: Priority 979
    Thread 0: Priority 978
    Thread 2: Priority 978
    Thread 4: Priority 978
    Thread 1: Priority 978
    Thread 3: Priority 978
    Thread 0: Priority 977
    Thread 2: Priority 977
    Thread 3: Priority 977
    Thread 4: Priority 977
    Thread 1: Priority 977
    Thread 0: Priority 976
    Thread 2: Priority 976
    Thread 3: Priority 976
    Thread 4: Priority 976
    Thread 1: Priority 976
    Thread 0: Priority 975
    Thread 2: Priority 975
    Thread 3: Priority 975
    Thread 4: Priority 975
    Thread 1: Priority 975
    Thread 0: Priority 974
    Thread 2: Priority 974
    Thread 3: Priority 974
    Thread 4: Priority 974
    Thread 1: Priority 974
    Thread 0: Priority 973
    Thread 2: Priority 973
    Thread 3: Priority 973
    Thread 4: Priority 973
    Thread 1: Priority 973
    Thread 0: Priority 972
    Thread 2: Priority 972
    Thread 3: Priority 972
    Thread 4: Priority 972
    Thread 1: Priority 972
    Thread 0: Priority 971
    Thread 2: Priority 971
    Thread 3: Priority 971
    Thread 4: Priority 971
    Thread 1: Priority 971
    Thread 0: Priority 970
    Thread 2: Priority 970
    Thread 3: Priority 970
    Thread 4: Priority 970
    Thread 1: Priority 970
    Thread 0: Priority 969
    Thread 2: Priority 969
    Thread 3: Priority 969
    Thread 4: Priority 969
    Thread 1: Priority 969
    Thread 0: Priority 968
    Thread 2: Priority 968
    Thread 3: Priority 968
    Thread 4: Priority 968
    Thread 1: Priority 968
    Thread 0: Priority 967
    Thread 2: Priority 967
    Thread 3: Priority 967
    Thread 4: Priority 967
    Thread 1: Priority 967
    Thread 0: Priority 966
    Thread 3: Priority 966
    Thread 2: Priority 966
    Thread 4: Priority 966
    Thread 1: Priority 966
    Thread 0: Priority 965
    Thread 2: Priority 965
    Thread 3: Priority 965
    Thread 4: Priority 965
    Thread 1: Priority 965
    Thread 0: Priority 964
    Thread 2: Priority 964
    Thread 3: Priority 964
    Thread 4: Priority 964
    Thread 1: Priority 964
    Thread 0: Priority 963
    Thread 2: Priority 963
    Thread 3: Priority 963
    Thread 4: Priority 963
    Thread 1: Priority 963
    Thread 0: Priority 962
    Thread 2: Priority 962
    Thread 3: Priority 962
    Thread 4: Priority 962
    Thread 1: Priority 962
    Thread 0: Priority 961
    Thread 2: Priority 961
    Thread 3: Priority 961
    Thread 4: Priority 961
    Thread 1: Priority 961
    Thread 0: Priority 960
    Thread 2: Priority 960
    Thread 3: Priority 960
    Thread 4: Priority 960
    Thread 1: Priority 960
    Thread 0: Priority 959
    Thread 2: Priority 959
    Thread 3: Priority 959
    Thread 4: Priority 959
    Thread 1: Priority 959
    Thread 0: Priority 958
    Thread 2: Priority 958
    Thread 4: Priority 958
    Thread 1: Priority 958
    Thread 3: Priority 958
    Thread 0: Priority 957
    Thread 2: Priority 957
    Thread 3: Priority 957
    Thread 4: Priority 957
    Thread 1: Priority 957
    Thread 0: Priority 956
    Thread 2: Priority 956
    Thread 3: Priority 956
    Thread 4: Priority 956
    Thread 1: Priority 956
    Thread 0: Priority 955
    Thread 2: Priority 955
    Thread 3: Priority 955
    Thread 4: Priority 955
    Thread 1: Priority 955
    Thread 0: Priority 954
    Thread 2: Priority 954
    Thread 3: Priority 954
    Thread 4: Priority 954
    Thread 1: Priority 954
    Thread 0: Priority 953
    Thread 2: Priority 953
    Thread 3: Priority 953
    Thread 4: Priority 953
    Thread 1: Priority 953
    Thread 0: Priority 952
    Thread 2: Priority 952
    Thread 3: Priority 952
    Thread 4: Priority 952
    Thread 1: Priority 952
    Thread 0: Priority 951
    Thread 2: Priority 951
    Thread 3: Priority 951
    Thread 4: Priority 951
    Thread 1: Priority 951
    Thread 0: Priority 950
    Thread 2: Priority 950
    Thread 4: Priority 950
    Thread 3: Priority 950
    Thread 1: Priority 950
    Thread 0: Priority 949
    Thread 2: Priority 949
    Thread 3: Priority 949
    Thread 4: Priority 949
    Thread 1: Priority 949
    Thread 0: Priority 948
    Thread 2: Priority 948
    Thread 3: Priority 948
    Thread 4: Priority 948
    Thread 1: Priority 948
    Thread 0: Priority 947
    Thread 2: Priority 947
    Thread 3: Priority 947
    Thread 4: Priority 947
    Thread 1: Priority 947
    Thread 0: Priority 946
    Thread 3: Priority 946
    Thread 2: Priority 946
    Thread 4: Priority 946
    Thread 1: Priority 946
    Thread 0: Priority 945
    Thread 2: Priority 945
    Thread 3: Priority 945
    Thread 4: Priority 945
    Thread 1: Priority 945
    Thread 0: Priority 944
    Thread 2: Priority 944
    Thread 3: Priority 944
    Thread 4: Priority 944
    Thread 1: Priority 944
    Thread 0: Priority 943
    Thread 2: Priority 943
    Thread 3: Priority 943
    Thread 4: Priority 943
    Thread 1: Priority 943
    Thread 0: Priority 942
    Thread 2: Priority 942
    Thread 3: Priority 942
    Thread 4: Priority 942
    Thread 1: Priority 942
    Thread 0: Priority 941
    Thread 2: Priority 941
    Thread 3: Priority 941
    Thread 4: Priority 941
    Thread 1: Priority 941
    Thread 0: Priority 940
    Thread 2: Priority 940
    Thread 3: Priority 940
    Thread 4: Priority 940
    Thread 1: Priority 940
    Thread 0: Priority 939
    Thread 2: Priority 939
    Thread 3: Priority 939
    Thread 4: Priority 939
    Thread 1: Priority 939
    Thread 0: Priority 938
    Thread 2: Priority 938
    Thread 3: Priority 938
    Thread 4: Priority 938
    Thread 1: Priority 938
    Thread 0: Priority 937
    Thread 2: Priority 937
    Thread 3: Priority 937
    Thread 4: Priority 937
    Thread 1: Priority 937
    Thread 0: Priority 936
    Thread 2: Priority 936
    Thread 3: Priority 936
    Thread 4: Priority 936
    Thread 1: Priority 936
    Thread 0: Priority 935
    Thread 2: Priority 935
    Thread 3: Priority 935
    Thread 4: Priority 935
    Thread 1: Priority 935
    Thread 0: Priority 934
    Thread 2: Priority 934
    Thread 3: Priority 934
    Thread 4: Priority 934
    Thread 1: Priority 934
    Thread 0: Priority 933
    Thread 2: Priority 933
    Thread 3: Priority 933
    Thread 4: Priority 933
    Thread 1: Priority 933
    Thread 0: Priority 932
    Thread 2: Priority 932
    Thread 3: Priority 932
    Thread 4: Priority 932
    Thread 1: Priority 932
    Thread 0: Priority 931
    Thread 2: Priority 931
    Thread 3: Priority 931
    Thread 4: Priority 931
    Thread 1: Priority 931
    Thread 0: Priority 930
    Thread 2: Priority 930
    Thread 4: Priority 930
    Thread 3: Priority 930
    Thread 1: Priority 930
    Thread 0: Priority 929
    Thread 2: Priority 929
    Thread 3: Priority 929
    Thread 4: Priority 929
    Thread 1: Priority 929
    Thread 0: Priority 928
    Thread 2: Priority 928
    Thread 3: Priority 928
    Thread 4: Priority 928
    Thread 1: Priority 928
    Thread 0: Priority 927
    Thread 2: Priority 927
    Thread 3: Priority 927
    Thread 4: Priority 927
    Thread 1: Priority 927
    Thread 0: Priority 926
    Thread 3: Priority 926
    Thread 2: Priority 926
    Thread 4: Priority 926
    Thread 1: Priority 926
    Thread 0: Priority 925
    Thread 2: Priority 925
    Thread 3: Priority 925
    Thread 4: Priority 925
    Thread 1: Priority 925
    Thread 0: Priority 924
    Thread 2: Priority 924
    Thread 3: Priority 924
    Thread 4: Priority 924
    Thread 1: Priority 924
    Thread 0: Priority 923
    Thread 2: Priority 923
    Thread 3: Priority 923
    Thread 4: Priority 923
    Thread 1: Priority 923
    Thread 0: Priority 922
    Thread 2: Priority 922
    Thread 3: Priority 922
    Thread 4: Priority 922
    Thread 1: Priority 922
    Thread 0: Priority 921
    Thread 2: Priority 921
    Thread 3: Priority 921
    Thread 4: Priority 921
    Thread 1: Priority 921
    Thread 0: Priority 920
    Thread 2: Priority 920
    Thread 3: Priority 920
    Thread 4: Priority 920
    Thread 1: Priority 920
    Thread 0: Priority 919
    Thread 2: Priority 919
    Thread 3: Priority 919
    Thread 4: Priority 919
    Thread 1: Priority 919
    Thread 0: Priority 918
    Thread 2: Priority 918
    Thread 4: Priority 918
    Thread 1: Priority 918
    Thread 3: Priority 918
    Thread 0: Priority 917
    Thread 2: Priority 917
    Thread 3: Priority 917
    Thread 4: Priority 917
    Thread 1: Priority 917
    Thread 0: Priority 916
    Thread 2: Priority 916
    Thread 3: Priority 916
    Thread 4: Priority 916
    Thread 1: Priority 916
    Thread 0: Priority 915
    Thread 2: Priority 915
    Thread 3: Priority 915
    Thread 4: Priority 915
    Thread 1: Priority 915
    Thread 0: Priority 914
    Thread 2: Priority 914
    Thread 3: Priority 914
    Thread 4: Priority 914
    Thread 1: Priority 914
    Thread 0: Priority 913
    Thread 2: Priority 913
    Thread 3: Priority 913
    Thread 4: Priority 913
    Thread 1: Priority 913
    Thread 0: Priority 912
    Thread 2: Priority 912
    Thread 3: Priority 912
    Thread 4: Priority 912
    Thread 1: Priority 912
    Thread 0: Priority 911
    Thread 2: Priority 911
    Thread 3: Priority 911
    Thread 4: Priority 911
    Thread 1: Priority 911
    Thread 0: Priority 910
    Thread 2: Priority 910
    Thread 4: Priority 910
    Thread 3: Priority 910
    Thread 1: Priority 910
    Thread 0: Priority 909
    Thread 3: Priority 909
    Thread 4: Priority 909
    Thread 2: Priority 909
    Thread 1: Priority 909
    Thread 0: Priority 908
    Thread 2: Priority 908
    Thread 3: Priority 908
    Thread 4: Priority 908
    Thread 1: Priority 908
    Thread 0: Priority 907
    Thread 2: Priority 907
    Thread 3: Priority 907
    Thread 4: Priority 907
    Thread 1: Priority 907
    Thread 0: Priority 906
    Thread 2: Priority 906
    Thread 3: Priority 906
    Thread 4: Priority 906
    Thread 1: Priority 906
    Thread 0: Priority 905
    Thread 2: Priority 905
    Thread 3: Priority 905
    Thread 4: Priority 905
    Thread 1: Priority 905
    Thread 0: Priority 904
    Thread 2: Priority 904
    Thread 3: Priority 904
    Thread 4: Priority 904
    Thread 1: Priority 904
    Thread 0: Priority 903
    Thread 3: Priority 903
    Thread 4: Priority 903
    Thread 1: Priority 903
    Thread 2: Priority 903
    Thread 0: Priority 902
    Thread 2: Priority 902
    Thread 3: Priority 902
    Thread 4: Priority 902
    Thread 1: Priority 902
    Thread 0: Priority 901
    Thread 2: Priority 901
    Thread 3: Priority 901
    Thread 4: Priority 901
    Thread 1: Priority 901
    Thread 0: Priority 900
    Thread 2: Priority 900
    Thread 3: Priority 900
    Thread 4: Priority 900
    Thread 1: Priority 900
    Thread 2: Priority 899
    Thread 3: Priority 899
    Thread 4: Priority 899
    Thread 1: Priority 899
    Thread 0: Priority 899
    Thread 2: Priority 898
    Thread 4: Priority 898
    Thread 1: Priority 898
    Thread 3: Priority 898
    Thread 0: Priority 898
    Thread 2: Priority 897
    Thread 3: Priority 897
    Thread 4: Priority 897
    Thread 1: Priority 897
    Thread 0: Priority 897
    Thread 2: Priority 896
    Thread 3: Priority 896
    Thread 4: Priority 896
    Thread 1: Priority 896
    Thread 0: Priority 896
    Thread 2: Priority 895
    Thread 3: Priority 895
    Thread 4: Priority 895
    Thread 1: Priority 895
    Thread 0: Priority 895
    Thread 2: Priority 894
    Thread 3: Priority 894
    Thread 4: Priority 894
    Thread 1: Priority 894
    Thread 0: Priority 894
    Thread 2: Priority 893
    Thread 3: Priority 893
    Thread 4: Priority 893
    Thread 1: Priority 893
    Thread 0: Priority 893
    Thread 2: Priority 892
    Thread 3: Priority 892
    Thread 4: Priority 892
    Thread 1: Priority 892
    Thread 0: Priority 892
    Thread 2: Priority 891
    Thread 3: Priority 891
    Thread 4: Priority 891
    Thread 1: Priority 891
    Thread 0: Priority 891
    Thread 2: Priority 890
    Thread 3: Priority 890
    Thread 4: Priority 890
    Thread 1: Priority 890
    Thread 0: Priority 890
    Thread 3: Priority 889
    Thread 4: Priority 889
    Thread 2: Priority 889
    Thread 1: Priority 889
    Thread 0: Priority 889
    Thread 2: Priority 888
    Thread 3: Priority 888
    Thread 4: Priority 888
    Thread 1: Priority 888
    Thread 0: Priority 888
    Thread 2: Priority 887
    Thread 3: Priority 887
    Thread 4: Priority 887
    Thread 1: Priority 887
    Thread 0: Priority 887
    Thread 2: Priority 886
    Thread 4: Priority 886
    Thread 3: Priority 886
    Thread 1: Priority 886
    Thread 0: Priority 886
    Thread 2: Priority 885
    Thread 3: Priority 885
    Thread 4: Priority 885
    Thread 1: Priority 885
    Thread 0: Priority 885
    Thread 2: Priority 884
    Thread 3: Priority 884
    Thread 4: Priority 884
    Thread 1: Priority 884
    Thread 0: Priority 884
    Thread 2: Priority 883
    Thread 3: Priority 883
    Thread 4: Priority 883
    Thread 1: Priority 883
    Thread 0: Priority 883
    Thread 2: Priority 882
    Thread 3: Priority 882
    Thread 4: Priority 882
    Thread 1: Priority 882
    Thread 0: Priority 882
    Thread 2: Priority 881
    Thread 3: Priority 881
    Thread 4: Priority 881
    Thread 1: Priority 881
    Thread 0: Priority 881
    Thread 3: Priority 880
    Thread 4: Priority 880
    Thread 1: Priority 880
    Thread 2: Priority 880
    Thread 0: Priority 880
    Thread 2: Priority 879
    Thread 3: Priority 879
    Thread 4: Priority 879
    Thread 1: Priority 879
    Thread 0: Priority 879
    Thread 2: Priority 878
    Thread 4: Priority 878
    Thread 1: Priority 878
    Thread 3: Priority 878
    Thread 0: Priority 878
    Thread 2: Priority 877
    Thread 3: Priority 877
    Thread 4: Priority 877
    Thread 1: Priority 877
    Thread 0: Priority 877
    Thread 2: Priority 876
    Thread 3: Priority 876
    Thread 4: Priority 876
    Thread 1: Priority 876
    Thread 0: Priority 876
    Thread 2: Priority 875
    Thread 3: Priority 875
    Thread 4: Priority 875
    Thread 1: Priority 875
    Thread 0: Priority 875
    Thread 2: Priority 874
    Thread 3: Priority 874
    Thread 4: Priority 874
    Thread 1: Priority 874
    Thread 0: Priority 874
    Thread 2: Priority 873
    Thread 3: Priority 873
    Thread 4: Priority 873
    Thread 1: Priority 873
    Thread 0: Priority 873
    Thread 2: Priority 872
    Thread 3: Priority 872
    Thread 4: Priority 872
    Thread 1: Priority 872
    Thread 0: Priority 872
    Thread 2: Priority 871
    Thread 3: Priority 871
    Thread 4: Priority 871
    Thread 1: Priority 871
    Thread 0: Priority 871
    Thread 2: Priority 870
    Thread 4: Priority 870
    Thread 3: Priority 870
    Thread 1: Priority 870
    Thread 0: Priority 870
    Thread 2: Priority 869
    Thread 3: Priority 869
    Thread 4: Priority 869
    Thread 1: Priority 869
    Thread 0: Priority 869
    Thread 2: Priority 868
    Thread 3: Priority 868
    Thread 4: Priority 868
    Thread 1: Priority 868
    Thread 0: Priority 868
    Thread 2: Priority 867
    Thread 3: Priority 867
    Thread 4: Priority 867
    Thread 1: Priority 867
    Thread 0: Priority 867
    Thread 3: Priority 866
    Thread 2: Priority 866
    Thread 4: Priority 866
    Thread 1: Priority 866
    Thread 0: Priority 866
    Thread 2: Priority 865
    Thread 3: Priority 865
    Thread 4: Priority 865
    Thread 1: Priority 865
    Thread 0: Priority 865
    Thread 2: Priority 864
    Thread 3: Priority 864
    Thread 4: Priority 864
    Thread 1: Priority 864
    Thread 0: Priority 864
    Thread 2: Priority 863
    Thread 3: Priority 863
    Thread 4: Priority 863
    Thread 1: Priority 863
    Thread 0: Priority 863
    Thread 2: Priority 862
    Thread 3: Priority 862
    Thread 4: Priority 862
    Thread 1: Priority 862
    Thread 0: Priority 862
    Thread 2: Priority 861
    Thread 3: Priority 861
    Thread 4: Priority 861
    Thread 1: Priority 861
    Thread 0: Priority 861
    Thread 2: Priority 860
    Thread 3: Priority 860
    Thread 4: Priority 860
    Thread 1: Priority 860
    Thread 0: Priority 860
    Thread 2: Priority 859
    Thread 3: Priority 859
    Thread 4: Priority 859
    Thread 1: Priority 859
    Thread 0: Priority 859
    Thread 2: Priority 858
    Thread 3: Priority 858
    Thread 4: Priority 858
    Thread 1: Priority 858
    Thread 0: Priority 858
    Thread 3: Priority 857
    Thread 4: Priority 857
    Thread 1: Priority 857
    Thread 2: Priority 857
    Thread 0: Priority 857
    Thread 2: Priority 856
    Thread 3: Priority 856
    Thread 4: Priority 856
    Thread 1: Priority 856
    Thread 0: Priority 856
    Thread 2: Priority 855
    Thread 3: Priority 855
    Thread 4: Priority 855
    Thread 1: Priority 855
    Thread 0: Priority 855
    Thread 2: Priority 854
    Thread 3: Priority 854
    Thread 4: Priority 854
    Thread 1: Priority 854
    Thread 0: Priority 854
    Thread 2: Priority 853
    Thread 3: Priority 853
    Thread 4: Priority 853
    Thread 1: Priority 853
    Thread 0: Priority 853
    Thread 4: Priority 852
    Thread 2: Priority 852
    Thread 3: Priority 852
    Thread 1: Priority 852
    Thread 0: Priority 852
    Thread 2: Priority 851
    Thread 3: Priority 851
    Thread 4: Priority 851
    Thread 1: Priority 851
    Thread 0: Priority 851
    Thread 2: Priority 850
    Thread 3: Priority 850
    Thread 4: Priority 850
    Thread 1: Priority 850
    Thread 0: Priority 850
    Thread 2: Priority 849
    Thread 3: Priority 849
    Thread 4: Priority 849
    Thread 1: Priority 849
    Thread 0: Priority 849
    Thread 3: Priority 848
    Thread 2: Priority 848
    Thread 4: Priority 848
    Thread 1: Priority 848
    Thread 0: Priority 848
    Thread 2: Priority 847
    Thread 3: Priority 847
    Thread 4: Priority 847
    Thread 1: Priority 847
    Thread 0: Priority 847
    Thread 2: Priority 846
    Thread 3: Priority 846
    Thread 4: Priority 846
    Thread 1: Priority 846
    Thread 0: Priority 846
    Thread 2: Priority 845
    Thread 3: Priority 845
    Thread 4: Priority 845
    Thread 1: Priority 845
    Thread 0: Priority 845
    Thread 3: Priority 844
    Thread 2: Priority 844
    Thread 4: Priority 844
    Thread 1: Priority 844
    Thread 0: Priority 844
    Thread 2: Priority 843
    Thread 3: Priority 843
    Thread 4: Priority 843
    Thread 1: Priority 843
    Thread 0: Priority 843
    Thread 2: Priority 842
    Thread 3: Priority 842
    Thread 4: Priority 842
    Thread 1: Priority 842
    Thread 0: Priority 842
    Thread 2: Priority 841
    Thread 3: Priority 841
    Thread 4: Priority 841
    Thread 1: Priority 841
    Thread 0: Priority 841
    Thread 2: Priority 840
    Thread 4: Priority 840
    Thread 1: Priority 840
    Thread 3: Priority 840
    Thread 0: Priority 840
    Thread 3: Priority 839
    Thread 4: Priority 839
    Thread 1: Priority 839
    Thread 2: Priority 839
    Thread 0: Priority 839
    Thread 2: Priority 838
    Thread 3: Priority 838
    Thread 4: Priority 838
    Thread 1: Priority 838
    Thread 0: Priority 838
    Thread 2: Priority 837
    Thread 3: Priority 837
    Thread 4: Priority 837
    Thread 1: Priority 837
    Thread 0: Priority 837
    Thread 2: Priority 836
    Thread 3: Priority 836
    Thread 4: Priority 836
    Thread 1: Priority 836
    Thread 0: Priority 836
    Thread 2: Priority 835
    Thread 3: Priority 835
    Thread 4: Priority 835
    Thread 1: Priority 835
    Thread 0: Priority 835
    Thread 2: Priority 834
    Thread 3: Priority 834
    Thread 4: Priority 834
    Thread 1: Priority 834
    Thread 0: Priority 834
    Thread 2: Priority 833
    Thread 3: Priority 833
    Thread 4: Priority 833
    Thread 1: Priority 833
    Thread 0: Priority 833
    Thread 2: Priority 832
    Thread 4: Priority 832
    Thread 3: Priority 832
    Thread 1: Priority 832
    Thread 0: Priority 832
    Thread 2: Priority 831
    Thread 3: Priority 831
    Thread 4: Priority 831
    Thread 1: Priority 831
    Thread 0: Priority 831
    Thread 2: Priority 830
    Thread 3: Priority 830
    Thread 4: Priority 830
    Thread 1: Priority 830
    Thread 0: Priority 830
    Thread 2: Priority 829
    Thread 3: Priority 829
    Thread 4: Priority 829
    Thread 1: Priority 829
    Thread 0: Priority 829
    Thread 2: Priority 828
    Thread 3: Priority 828
    Thread 4: Priority 828
    Thread 1: Priority 828
    Thread 0: Priority 828
    Thread 2: Priority 827
    Thread 3: Priority 827
    Thread 4: Priority 827
    Thread 1: Priority 827
    Thread 0: Priority 827
    Thread 2: Priority 826
    Thread 3: Priority 826
    Thread 4: Priority 826
    Thread 1: Priority 826
    Thread 0: Priority 826
    Thread 2: Priority 825
    Thread 3: Priority 825
    Thread 4: Priority 825
    Thread 1: Priority 825
    Thread 0: Priority 825
    Thread 2: Priority 824
    Thread 3: Priority 824
    Thread 4: Priority 824
    Thread 1: Priority 824
    Thread 0: Priority 824
    Thread 2: Priority 823
    Thread 3: Priority 823
    Thread 4: Priority 823
    Thread 1: Priority 823
    Thread 0: Priority 823
    Thread 2: Priority 822
    Thread 3: Priority 822
    Thread 4: Priority 822
    Thread 1: Priority 822
    Thread 0: Priority 822
    Thread 2: Priority 821
    Thread 3: Priority 821
    Thread 4: Priority 821
    Thread 1: Priority 821
    Thread 0: Priority 821
    Thread 2: Priority 820
    Thread 4: Priority 820
    Thread 1: Priority 820
    Thread 3: Priority 820
    Thread 0: Priority 820
    Thread 2: Priority 819
    Thread 3: Priority 819
    Thread 4: Priority 819
    Thread 1: Priority 819
    Thread 0: Priority 819
    Thread 2: Priority 818
    Thread 3: Priority 818
    Thread 4: Priority 818
    Thread 1: Priority 818
    Thread 0: Priority 818
    Thread 3: Priority 817
    Thread 4: Priority 817
    Thread 2: Priority 817
    Thread 1: Priority 817
    Thread 0: Priority 817
    Thread 2: Priority 816
    Thread 3: Priority 816
    Thread 4: Priority 816
    Thread 1: Priority 816
    Thread 0: Priority 816
    Thread 2: Priority 815
    Thread 3: Priority 815
    Thread 4: Priority 815
    Thread 1: Priority 815
    Thread 0: Priority 815
    Thread 2: Priority 814
    Thread 3: Priority 814
    Thread 4: Priority 814
    Thread 1: Priority 814
    Thread 0: Priority 814
    Thread 2: Priority 813
    Thread 3: Priority 813
    Thread 4: Priority 813
    Thread 1: Priority 813
    Thread 0: Priority 813
    Thread 2: Priority 812
    Thread 3: Priority 812
    Thread 4: Priority 812
    Thread 1: Priority 812
    Thread 0: Priority 812
    Thread 2: Priority 811
    Thread 3: Priority 811
    Thread 4: Priority 811
    Thread 1: Priority 811
    Thread 0: Priority 811
    Thread 3: Priority 810
    Thread 2: Priority 810
    Thread 4: Priority 810
    Thread 1: Priority 810
    Thread 0: Priority 810
    Thread 2: Priority 809
    Thread 3: Priority 809
    Thread 4: Priority 809
    Thread 1: Priority 809
    Thread 0: Priority 809
    Thread 3: Priority 808
    Thread 2: Priority 808
    Thread 4: Priority 808
    Thread 1: Priority 808
    Thread 0: Priority 808
    Thread 2: Priority 807
    Thread 3: Priority 807
    Thread 4: Priority 807
    Thread 1: Priority 807
    Thread 0: Priority 807
    Thread 2: Priority 806
    Thread 3: Priority 806
    Thread 4: Priority 806
    Thread 1: Priority 806
    Thread 0: Priority 806
    Thread 2: Priority 805
    Thread 3: Priority 805
    Thread 4: Priority 805
    Thread 1: Priority 805
    Thread 0: Priority 805
    Thread 2: Priority 804
    Thread 3: Priority 804
    Thread 4: Priority 804
    Thread 1: Priority 804
    Thread 0: Priority 804
    Thread 2: Priority 803
    Thread 3: Priority 803
    Thread 4: Priority 803
    Thread 1: Priority 803
    Thread 0: Priority 803
    Thread 2: Priority 802
    Thread 3: Priority 802
    Thread 4: Priority 802
    Thread 1: Priority 802
    Thread 0: Priority 802
    Thread 3: Priority 801
    Thread 4: Priority 801
    Thread 1: Priority 801
    Thread 2: Priority 801
    Thread 0: Priority 801
    Thread 2: Priority 800
    Thread 4: Priority 800
    Thread 1: Priority 800
    Thread 3: Priority 800
    Thread 0: Priority 800
    Thread 2: Priority 799
    Thread 3: Priority 799
    Thread 4: Priority 799
    Thread 1: Priority 799
    Thread 0: Priority 799
    Thread 2: Priority 798
    Thread 3: Priority 798
    Thread 4: Priority 798
    Thread 1: Priority 798
    Thread 0: Priority 798
    Thread 2: Priority 797
    Thread 3: Priority 797
    Thread 4: Priority 797
    Thread 1: Priority 797
    Thread 0: Priority 797
    Thread 2: Priority 796
    Thread 3: Priority 796
    Thread 4: Priority 796
    Thread 1: Priority 796
    Thread 0: Priority 796
    Thread 2: Priority 795
    Thread 3: Priority 795
    Thread 4: Priority 795
    Thread 1: Priority 795
    Thread 0: Priority 795
    Thread 2: Priority 794
    Thread 3: Priority 794
    Thread 4: Priority 794
    Thread 1: Priority 794
    Thread 0: Priority 794
    Thread 2: Priority 793
    Thread 4: Priority 793
    Thread 3: Priority 793
    Thread 1: Priority 793
    Thread 0: Priority 793
    Thread 2: Priority 792
    Thread 3: Priority 792
    Thread 4: Priority 792
    Thread 1: Priority 792
    Thread 0: Priority 792
    Thread 2: Priority 791
    Thread 3: Priority 791
    Thread 4: Priority 791
    Thread 1: Priority 791
    Thread 0: Priority 791
    Thread 2: Priority 790
    Thread 3: Priority 790
    Thread 4: Priority 790
    Thread 1: Priority 790
    Thread 0: Priority 790
    Thread 2: Priority 789
    Thread 4: Priority 789
    Thread 3: Priority 789
    Thread 1: Priority 789
    Thread 0: Priority 789
    Thread 2: Priority 788
    Thread 3: Priority 788
    Thread 4: Priority 788
    Thread 1: Priority 788
    Thread 0: Priority 788
    Thread 3: Priority 787
    Thread 4: Priority 787
    Thread 2: Priority 787
    Thread 1: Priority 787
    Thread 0: Priority 787
    Thread 2: Priority 786
    Thread 3: Priority 786
    Thread 4: Priority 786
    Thread 1: Priority 786
    Thread 0: Priority 786
    Thread 2: Priority 785
    Thread 3: Priority 785
    Thread 4: Priority 785
    Thread 1: Priority 785
    Thread 0: Priority 785
    Thread 2: Priority 784
    Thread 3: Priority 784
    Thread 4: Priority 784
    Thread 1: Priority 784
    Thread 0: Priority 784
    Thread 2: Priority 783
    Thread 3: Priority 783
    Thread 4: Priority 783
    Thread 1: Priority 783
    Thread 0: Priority 783
    Thread 2: Priority 782
    Thread 3: Priority 782
    Thread 4: Priority 782
    Thread 1: Priority 782
    Thread 0: Priority 782
    Thread 2: Priority 781
    Thread 3: Priority 781
    Thread 4: Priority 781
    Thread 1: Priority 781
    Thread 0: Priority 781
    Thread 2: Priority 780
    Thread 3: Priority 780
    Thread 4: Priority 780
    Thread 1: Priority 780
    Thread 0: Priority 780
    Thread 2: Priority 779
    Thread 3: Priority 779
    Thread 4: Priority 779
    Thread 1: Priority 779
    Thread 0: Priority 779
    Thread 2: Priority 778
    Thread 3: Priority 778
    Thread 4: Priority 778
    Thread 1: Priority 778
    Thread 0: Priority 778
    Thread 2: Priority 777
    Thread 3: Priority 777
    Thread 4: Priority 777
    Thread 1: Priority 777
    Thread 0: Priority 777
    Thread 2: Priority 776
    Thread 3: Priority 776
    Thread 4: Priority 776
    Thread 1: Priority 776
    Thread 0: Priority 776
    Thread 2: Priority 775
    Thread 3: Priority 775
    Thread 4: Priority 775
    Thread 1: Priority 775
    Thread 0: Priority 775
    Thread 2: Priority 774
    Thread 3: Priority 774
    Thread 4: Priority 774
    Thread 1: Priority 774
    Thread 0: Priority 774
    Thread 4: Priority 773
    Thread 3: Priority 773
    Thread 1: Priority 773
    Thread 0: Priority 773
    Thread 2: Priority 773
    Thread 2: Priority 772
    Thread 3: Priority 772
    Thread 4: Priority 772
    Thread 1: Priority 772
    Thread 0: Priority 772
    Thread 2: Priority 771
    Thread 3: Priority 771
    Thread 4: Priority 771
    Thread 1: Priority 771
    Thread 0: Priority 771
    Thread 2: Priority 770
    Thread 3: Priority 770
    Thread 4: Priority 770
    Thread 1: Priority 770
    Thread 0: Priority 770
    Thread 3: Priority 769
    Thread 2: Priority 769
    Thread 4: Priority 769
    Thread 1: Priority 769
    Thread 0: Priority 769
    Thread 2: Priority 768
    Thread 3: Priority 768
    Thread 4: Priority 768
    Thread 1: Priority 768
    Thread 0: Priority 768
    Thread 2: Priority 767
    Thread 3: Priority 767
    Thread 4: Priority 767
    Thread 1: Priority 767
    Thread 0: Priority 767
    Thread 2: Priority 766
    Thread 3: Priority 766
    Thread 4: Priority 766
    Thread 1: Priority 766
    Thread 0: Priority 766
    Thread 2: Priority 765
    Thread 3: Priority 765
    Thread 4: Priority 765
    Thread 1: Priority 765
    Thread 0: Priority 765
    Thread 2: Priority 764
    Thread 3: Priority 764
    Thread 4: Priority 764
    Thread 1: Priority 764
    Thread 0: Priority 764
    Thread 2: Priority 763
    Thread 3: Priority 763
    Thread 4: Priority 763
    Thread 1: Priority 763
    Thread 0: Priority 763
    Thread 2: Priority 762
    Thread 3: Priority 762
    Thread 4: Priority 762
    Thread 1: Priority 762
    Thread 0: Priority 762
    Thread 2: Priority 761
    Thread 3: Priority 761
    Thread 4: Priority 761
    Thread 1: Priority 761
    Thread 0: Priority 761
    Thread 2: Priority 760
    Thread 3: Priority 760
    Thread 4: Priority 760
    Thread 1: Priority 760
    Thread 0: Priority 760
    Thread 2: Priority 759
    Thread 3: Priority 759
    Thread 4: Priority 759
    Thread 1: Priority 759
    Thread 0: Priority 759
    Thread 3: Priority 758
    Thread 4: Priority 758
    Thread 1: Priority 758
    Thread 2: Priority 758
    Thread 0: Priority 758
    Thread 2: Priority 757
    Thread 3: Priority 757
    Thread 4: Priority 757
    Thread 1: Priority 757
    Thread 0: Priority 757
    Thread 3: Priority 756
    Thread 2: Priority 756
    Thread 4: Priority 756
    Thread 1: Priority 756
    Thread 0: Priority 756
    Thread 2: Priority 755
    Thread 3: Priority 755
    Thread 4: Priority 755
    Thread 1: Priority 755
    Thread 0: Priority 755
    Thread 2: Priority 754
    Thread 3: Priority 754
    Thread 4: Priority 754
    Thread 1: Priority 754
    Thread 0: Priority 754
    Thread 2: Priority 753
    Thread 3: Priority 753
    Thread 4: Priority 753
    Thread 1: Priority 753
    Thread 0: Priority 753
    Thread 2: Priority 752
    Thread 4: Priority 752
    Thread 1: Priority 752
    Thread 3: Priority 752
    Thread 0: Priority 752
    Thread 2: Priority 751
    Thread 3: Priority 751
    Thread 4: Priority 751
    Thread 1: Priority 751
    Thread 0: Priority 751
    Thread 2: Priority 750
    Thread 3: Priority 750
    Thread 4: Priority 750
    Thread 1: Priority 750
    Thread 0: Priority 750
    Thread 2: Priority 749
    Thread 4: Priority 749
    Thread 3: Priority 749
    Thread 1: Priority 749
    Thread 0: Priority 749
    Thread 2: Priority 748
    Thread 3: Priority 748
    Thread 4: Priority 748
    Thread 1: Priority 748
    Thread 0: Priority 748
    Thread 2: Priority 747
    Thread 3: Priority 747
    Thread 4: Priority 747
    Thread 1: Priority 747
    Thread 0: Priority 747
    Thread 2: Priority 746
    Thread 3: Priority 746
    Thread 4: Priority 746
    Thread 1: Priority 746
    Thread 0: Priority 746
    Thread 2: Priority 745
    Thread 3: Priority 745
    Thread 4: Priority 745
    Thread 1: Priority 745
    Thread 0: Priority 745
    Thread 2: Priority 744
    Thread 3: Priority 744
    Thread 4: Priority 744
    Thread 1: Priority 744
    Thread 0: Priority 744
    Thread 2: Priority 743
    Thread 3: Priority 743
    Thread 4: Priority 743
    Thread 1: Priority 743
    Thread 0: Priority 743
    Thread 2: Priority 742
    Thread 4: Priority 742
    Thread 1: Priority 742
    Thread 3: Priority 742
    Thread 0: Priority 742
    Thread 2: Priority 741
    Thread 3: Priority 741
    Thread 4: Priority 741
    Thread 1: Priority 741
    Thread 0: Priority 741
    Thread 2: Priority 740
    Thread 3: Priority 740
    Thread 4: Priority 740
    Thread 1: Priority 740
    Thread 0: Priority 740
    Thread 2: Priority 739
    Thread 3: Priority 739
    Thread 4: Priority 739
    Thread 1: Priority 739
    Thread 0: Priority 739
    Thread 2: Priority 738
    Thread 3: Priority 738
    Thread 4: Priority 738
    Thread 1: Priority 738
    Thread 0: Priority 738
    Thread 2: Priority 737
    Thread 3: Priority 737
    Thread 4: Priority 737
    Thread 1: Priority 737
    Thread 0: Priority 737
    Thread 2: Priority 736
    Thread 3: Priority 736
    Thread 4: Priority 736
    Thread 1: Priority 736
    Thread 0: Priority 736
    Thread 2: Priority 735
    Thread 3: Priority 735
    Thread 4: Priority 735
    Thread 1: Priority 735
    Thread 0: Priority 735
    Thread 2: Priority 734
    Thread 3: Priority 734
    Thread 4: Priority 734
    Thread 1: Priority 734
    Thread 0: Priority 734
    Thread 2: Priority 733
    Thread 3: Priority 733
    Thread 4: Priority 733
    Thread 1: Priority 733
    Thread 0: Priority 733
    Thread 2: Priority 732
    Thread 3: Priority 732
    Thread 4: Priority 732
    Thread 1: Priority 732
    Thread 0: Priority 732
    Thread 2: Priority 731
    Thread 3: Priority 731
    Thread 4: Priority 731
    Thread 1: Priority 731
    Thread 0: Priority 731
    Thread 2: Priority 730
    Thread 3: Priority 730
    Thread 4: Priority 730
    Thread 1: Priority 730
    Thread 0: Priority 730
    Thread 2: Priority 729
    Thread 4: Priority 729
    Thread 3: Priority 729
    Thread 1: Priority 729
    Thread 0: Priority 729
    Thread 2: Priority 728
    Thread 3: Priority 728
    Thread 4: Priority 728
    Thread 1: Priority 728
    Thread 0: Priority 728
    Thread 3: Priority 727
    Thread 4: Priority 727
    Thread 2: Priority 727
    Thread 1: Priority 727
    Thread 0: Priority 727
    Thread 2: Priority 726
    Thread 3: Priority 726
    Thread 4: Priority 726
    Thread 1: Priority 726
    Thread 0: Priority 726
    Thread 3: Priority 725
    Thread 2: Priority 725
    Thread 4: Priority 725
    Thread 1: Priority 725
    Thread 0: Priority 725
    Thread 2: Priority 724
    Thread 3: Priority 724
    Thread 4: Priority 724
    Thread 1: Priority 724
    Thread 0: Priority 724
    Thread 2: Priority 723
    Thread 3: Priority 723
    Thread 4: Priority 723
    Thread 1: Priority 723
    Thread 0: Priority 723
    Thread 2: Priority 722
    Thread 3: Priority 722
    Thread 4: Priority 722
    Thread 1: Priority 722
    Thread 0: Priority 722
    Thread 2: Priority 721
    Thread 3: Priority 721
    Thread 4: Priority 721
    Thread 1: Priority 721
    Thread 0: Priority 721
    Thread 2: Priority 720
    Thread 3: Priority 720
    Thread 4: Priority 720
    Thread 1: Priority 720
    Thread 0: Priority 720
    Thread 2: Priority 719
    Thread 3: Priority 719
    Thread 4: Priority 719
    Thread 1: Priority 719
    Thread 0: Priority 719
    Thread 2: Priority 718
    Thread 3: Priority 718
    Thread 4: Priority 718
    Thread 1: Priority 718
    Thread 0: Priority 718
    Thread 2: Priority 717
    Thread 3: Priority 717
    Thread 4: Priority 717
    Thread 1: Priority 717
    Thread 0: Priority 717
    Thread 2: Priority 716
    Thread 3: Priority 716
    Thread 4: Priority 716
    Thread 1: Priority 716
    Thread 0: Priority 716
    Thread 2: Priority 715
    Thread 3: Priority 715
    Thread 4: Priority 715
    Thread 1: Priority 715
    Thread 0: Priority 715
    Thread 2: Priority 714
    Thread 3: Priority 714
    Thread 4: Priority 714
    Thread 1: Priority 714
    Thread 0: Priority 714
    Thread 2: Priority 713
    Thread 3: Priority 713
    Thread 4: Priority 713
    Thread 1: Priority 713
    Thread 0: Priority 713
    Thread 2: Priority 712
    Thread 4: Priority 712
    Thread 3: Priority 712
    Thread 1: Priority 712
    Thread 0: Priority 712
    Thread 2: Priority 711
    Thread 3: Priority 711
    Thread 4: Priority 711
    Thread 1: Priority 711
    Thread 0: Priority 711
    Thread 2: Priority 710
    Thread 3: Priority 710
    Thread 4: Priority 710
    Thread 1: Priority 710
    Thread 0: Priority 710
    Thread 2: Priority 709
    Thread 4: Priority 709
    Thread 1: Priority 709
    Thread 3: Priority 709
    Thread 0: Priority 709
    Thread 2: Priority 708
    Thread 3: Priority 708
    Thread 4: Priority 708
    Thread 1: Priority 708
    Thread 0: Priority 708
    Thread 2: Priority 707
    Thread 3: Priority 707
    Thread 4: Priority 707
    Thread 1: Priority 707
    Thread 0: Priority 707
    Thread 2: Priority 706
    Thread 3: Priority 706
    Thread 4: Priority 706
    Thread 1: Priority 706
    Thread 0: Priority 706
    Thread 2: Priority 705
    Thread 3: Priority 705
    Thread 4: Priority 705
    Thread 1: Priority 705
    Thread 0: Priority 705
    Thread 2: Priority 704
    Thread 3: Priority 704
    Thread 4: Priority 704
    Thread 1: Priority 704
    Thread 0: Priority 704
    Thread 3: Priority 703
    Thread 2: Priority 703
    Thread 4: Priority 703
    Thread 1: Priority 703
    Thread 0: Priority 703
    Thread 2: Priority 702
    Thread 3: Priority 702
    Thread 4: Priority 702
    Thread 1: Priority 702
    Thread 0: Priority 702
    Thread 2: Priority 701
    Thread 3: Priority 701
    Thread 4: Priority 701
    Thread 1: Priority 701
    Thread 0: Priority 701
    Thread 2: Priority 700
    Thread 3: Priority 700
    Thread 4: Priority 700
    Thread 1: Priority 700
    Thread 0: Priority 700
    Thread 2: Priority 699
    Thread 3: Priority 699
    Thread 4: Priority 699
    Thread 1: Priority 699
    Thread 0: Priority 699
    Thread 2: Priority 698
    Thread 3: Priority 698
    Thread 4: Priority 698
    Thread 1: Priority 698
    Thread 0: Priority 698
    Thread 2: Priority 697
    Thread 3: Priority 697
    Thread 4: Priority 697
    Thread 1: Priority 697
    Thread 0: Priority 697
    Thread 2: Priority 696
    Thread 3: Priority 696
    Thread 4: Priority 696
    Thread 1: Priority 696
    Thread 0: Priority 696
    Thread 2: Priority 695
    Thread 4: Priority 695
    Thread 3: Priority 695
    Thread 1: Priority 695
    Thread 0: Priority 695
    Thread 2: Priority 694
    Thread 3: Priority 694
    Thread 4: Priority 694
    Thread 1: Priority 694
    Thread 0: Priority 694
    Thread 2: Priority 693
    Thread 3: Priority 693
    Thread 4: Priority 693
    Thread 1: Priority 693
    Thread 0: Priority 693
    Thread 2: Priority 692
    Thread 3: Priority 692
    Thread 4: Priority 692
    Thread 1: Priority 692
    Thread 0: Priority 692
    Thread 3: Priority 691
    Thread 2: Priority 691
    Thread 4: Priority 691
    Thread 1: Priority 691
    Thread 0: Priority 691
    Thread 3: Priority 690
    Thread 4: Priority 690
    Thread 2: Priority 690
    Thread 1: Priority 690
    Thread 0: Priority 690
    Thread 2: Priority 689
    Thread 3: Priority 689
    Thread 4: Priority 689
    Thread 1: Priority 689
    Thread 0: Priority 689
    Thread 2: Priority 688
    Thread 3: Priority 688
    Thread 4: Priority 688
    Thread 1: Priority 688
    Thread 0: Priority 688
    Thread 2: Priority 687
    Thread 3: Priority 687
    Thread 4: Priority 687
    Thread 1: Priority 687
    Thread 0: Priority 687
    Thread 4: Priority 686
    Thread 3: Priority 686
    Thread 1: Priority 686
    Thread 2: Priority 686
    Thread 0: Priority 686
    Thread 2: Priority 685
    Thread 3: Priority 685
    Thread 4: Priority 685
    Thread 1: Priority 685
    Thread 0: Priority 685
    Thread 2: Priority 684
    Thread 3: Priority 684
    Thread 4: Priority 684
    Thread 1: Priority 684
    Thread 0: Priority 684
    Thread 3: Priority 683
    Thread 4: Priority 683
    Thread 2: Priority 683
    Thread 1: Priority 683
    Thread 0: Priority 683
    Thread 3: Priority 682
    Thread 2: Priority 682
    Thread 4: Priority 682
    Thread 1: Priority 682
    Thread 0: Priority 682
    Thread 2: Priority 681
    Thread 3: Priority 681
    Thread 4: Priority 681
    Thread 1: Priority 681
    Thread 0: Priority 681
    Thread 2: Priority 680
    Thread 3: Priority 680
    Thread 4: Priority 680
    Thread 1: Priority 680
    Thread 0: Priority 680
    Thread 2: Priority 679
    Thread 3: Priority 679
    Thread 4: Priority 679
    Thread 1: Priority 679
    Thread 0: Priority 679
    Thread 2: Priority 678
    Thread 3: Priority 678
    Thread 4: Priority 678
    Thread 1: Priority 678
    Thread 0: Priority 678
    Thread 2: Priority 677
    Thread 3: Priority 677
    Thread 4: Priority 677
    Thread 1: Priority 677
    Thread 0: Priority 677
    Thread 2: Priority 676
    Thread 3: Priority 676
    Thread 4: Priority 676
    Thread 1: Priority 676
    Thread 0: Priority 676
    Thread 2: Priority 675
    Thread 3: Priority 675
    Thread 4: Priority 675
    Thread 1: Priority 675
    Thread 0: Priority 675
    Thread 2: Priority 674
    Thread 3: Priority 674
    Thread 4: Priority 674
    Thread 1: Priority 674
    Thread 0: Priority 674
    Thread 2: Priority 673
    Thread 3: Priority 673
    Thread 4: Priority 673
    Thread 1: Priority 673
    Thread 0: Priority 673
    Thread 2: Priority 672
    Thread 3: Priority 672
    Thread 4: Priority 672
    Thread 1: Priority 672
    Thread 0: Priority 672
    Thread 2: Priority 671
    Thread 3: Priority 671
    Thread 4: Priority 671
    Thread 1: Priority 671
    Thread 0: Priority 671
    Thread 2: Priority 670
    Thread 3: Priority 670
    Thread 4: Priority 670
    Thread 1: Priority 670
    Thread 0: Priority 670
    Thread 2: Priority 669
    Thread 3: Priority 669
    Thread 4: Priority 669
    Thread 1: Priority 669
    Thread 0: Priority 669
    Thread 2: Priority 668
    Thread 3: Priority 668
    Thread 4: Priority 668
    Thread 1: Priority 668
    Thread 0: Priority 668
    Thread 2: Priority 667
    Thread 3: Priority 667
    Thread 4: Priority 667
    Thread 1: Priority 667
    Thread 0: Priority 667
    Thread 3: Priority 666
    Thread 4: Priority 666
    Thread 1: Priority 666
    Thread 0: Priority 666
    Thread 2: Priority 666
    Thread 2: Priority 665
    Thread 3: Priority 665
    Thread 4: Priority 665
    Thread 1: Priority 665
    Thread 0: Priority 665
    Thread 2: Priority 664
    Thread 4: Priority 664
    Thread 1: Priority 664
    Thread 3: Priority 664
    Thread 0: Priority 664
    Thread 2: Priority 663
    Thread 3: Priority 663
    Thread 4: Priority 663
    Thread 1: Priority 663
    Thread 0: Priority 663
    Thread 2: Priority 662
    Thread 3: Priority 662
    Thread 4: Priority 662
    Thread 1: Priority 662
    Thread 0: Priority 662
    Thread 2: Priority 661
    Thread 3: Priority 661
    Thread 4: Priority 661
    Thread 1: Priority 661
    Thread 0: Priority 661
    Thread 2: Priority 660
    Thread 3: Priority 660
    Thread 4: Priority 660
    Thread 1: Priority 660
    Thread 0: Priority 660
    Thread 2: Priority 659
    Thread 3: Priority 659
    Thread 4: Priority 659
    Thread 1: Priority 659
    Thread 0: Priority 659
    Thread 2: Priority 658
    Thread 3: Priority 658
    Thread 4: Priority 658
    Thread 1: Priority 658
    Thread 0: Priority 658
    Thread 2: Priority 657
    Thread 3: Priority 657
    Thread 4: Priority 657
    Thread 1: Priority 657
    Thread 0: Priority 657
    Thread 2: Priority 656
    Thread 3: Priority 656
    Thread 4: Priority 656
    Thread 1: Priority 656
    Thread 0: Priority 656
    Thread 2: Priority 655
    Thread 3: Priority 655
    Thread 4: Priority 655
    Thread 1: Priority 655
    Thread 0: Priority 655
    Thread 2: Priority 654
    Thread 3: Priority 654
    Thread 4: Priority 654
    Thread 1: Priority 654
    Thread 0: Priority 654
    Thread 2: Priority 653
    Thread 3: Priority 653
    Thread 4: Priority 653
    Thread 1: Priority 653
    Thread 0: Priority 653
    Thread 2: Priority 652
    Thread 4: Priority 652
    Thread 1: Priority 652
    Thread 3: Priority 652
    Thread 0: Priority 652
    Thread 2: Priority 651
    Thread 3: Priority 651
    Thread 4: Priority 651
    Thread 1: Priority 651
    Thread 0: Priority 651
    Thread 2: Priority 650
    Thread 3: Priority 650
    Thread 4: Priority 650
    Thread 1: Priority 650
    Thread 0: Priority 650
    Thread 2: Priority 649
    Thread 3: Priority 649
    Thread 4: Priority 649
    Thread 1: Priority 649
    Thread 0: Priority 649
    Thread 2: Priority 648
    Thread 3: Priority 648
    Thread 4: Priority 648
    Thread 1: Priority 648
    Thread 0: Priority 648
    Thread 2: Priority 647
    Thread 3: Priority 647
    Thread 4: Priority 647
    Thread 1: Priority 647
    Thread 0: Priority 647
    Thread 2: Priority 646
    Thread 3: Priority 646
    Thread 4: Priority 646
    Thread 1: Priority 646
    Thread 0: Priority 646
    Thread 2: Priority 645
    Thread 3: Priority 645
    Thread 4: Priority 645
    Thread 1: Priority 645
    Thread 0: Priority 645
    Thread 2: Priority 644
    Thread 3: Priority 644
    Thread 4: Priority 644
    Thread 1: Priority 644
    Thread 0: Priority 644
    Thread 2: Priority 643
    Thread 3: Priority 643
    Thread 4: Priority 643
    Thread 1: Priority 643
    Thread 0: Priority 643
    Thread 3: Priority 642
    Thread 4: Priority 642
    Thread 0: Priority 642
    Thread 1: Priority 642
    Thread 2: Priority 642
    Thread 4: Priority 641
    Thread 1: Priority 641
    Thread 0: Priority 641
    Thread 3: Priority 641
    Thread 2: Priority 641
    Thread 3: Priority 640
    Thread 4: Priority 640
    Thread 1: Priority 640
    Thread 0: Priority 640
    Thread 2: Priority 640
    Thread 3: Priority 639
    Thread 4: Priority 639
    Thread 1: Priority 639
    Thread 0: Priority 639
    Thread 2: Priority 639
    Thread 4: Priority 638
    Thread 3: Priority 638
    Thread 1: Priority 638
    Thread 0: Priority 638
    Thread 2: Priority 638
    Thread 3: Priority 637
    Thread 4: Priority 637
    Thread 1: Priority 637
    Thread 0: Priority 637
    Thread 2: Priority 637
    Thread 3: Priority 636
    Thread 4: Priority 636
    Thread 1: Priority 636
    Thread 0: Priority 636
    Thread 2: Priority 636
    Thread 3: Priority 635
    Thread 4: Priority 635
    Thread 1: Priority 635
    Thread 0: Priority 635
    Thread 2: Priority 635
    Thread 3: Priority 634
    Thread 4: Priority 634
    Thread 1: Priority 634
    Thread 0: Priority 634
    Thread 2: Priority 634
    Thread 4: Priority 633
    Thread 3: Priority 633
    Thread 1: Priority 633
    Thread 0: Priority 633
    Thread 2: Priority 633
    Thread 3: Priority 632
    Thread 4: Priority 632
    Thread 1: Priority 632
    Thread 0: Priority 632
    Thread 2: Priority 632
    Thread 3: Priority 631
    Thread 4: Priority 631
    Thread 1: Priority 631
    Thread 0: Priority 631
    Thread 2: Priority 631
    Thread 3: Priority 630
    Thread 4: Priority 630
    Thread 1: Priority 630
    Thread 0: Priority 630
    Thread 2: Priority 630
    Thread 3: Priority 629
    Thread 4: Priority 629
    Thread 1: Priority 629
    Thread 0: Priority 629
    Thread 2: Priority 629
    Thread 3: Priority 628
    Thread 4: Priority 628
    Thread 1: Priority 628
    Thread 0: Priority 628
    Thread 2: Priority 628
    Thread 3: Priority 627
    Thread 4: Priority 627
    Thread 1: Priority 627
    Thread 0: Priority 627
    Thread 2: Priority 627
    Thread 3: Priority 626
    Thread 4: Priority 626
    Thread 1: Priority 626
    Thread 0: Priority 626
    Thread 2: Priority 626
    Thread 3: Priority 625
    Thread 4: Priority 625
    Thread 1: Priority 625
    Thread 0: Priority 625
    Thread 2: Priority 625
    Thread 4: Priority 624
    Thread 1: Priority 624
    Thread 3: Priority 624
    Thread 0: Priority 624
    Thread 2: Priority 624
    Thread 3: Priority 623
    Thread 4: Priority 623
    Thread 1: Priority 623
    Thread 0: Priority 623
    Thread 2: Priority 623
    Thread 3: Priority 622
    Thread 1: Priority 622
    Thread 4: Priority 622
    Thread 0: Priority 622
    Thread 2: Priority 622
    Thread 3: Priority 621
    Thread 4: Priority 621
    Thread 1: Priority 621
    Thread 0: Priority 621
    Thread 2: Priority 621
    Thread 4: Priority 620
    Thread 1: Priority 620
    Thread 3: Priority 620
    Thread 0: Priority 620
    Thread 2: Priority 620
    Thread 3: Priority 619
    Thread 4: Priority 619
    Thread 1: Priority 619
    Thread 0: Priority 619
    Thread 2: Priority 619
    Thread 3: Priority 618
    Thread 4: Priority 618
    Thread 1: Priority 618
    Thread 0: Priority 618
    Thread 2: Priority 618
    Thread 3: Priority 617
    Thread 4: Priority 617
    Thread 1: Priority 617
    Thread 0: Priority 617
    Thread 2: Priority 617
    Thread 3: Priority 616
    Thread 4: Priority 616
    Thread 1: Priority 616
    Thread 0: Priority 616
    Thread 2: Priority 616
    Thread 3: Priority 615
    Thread 4: Priority 615
    Thread 1: Priority 615
    Thread 0: Priority 615
    Thread 2: Priority 615
    Thread 3: Priority 614
    Thread 4: Priority 614
    Thread 2: Priority 614
    Thread 0: Priority 614
    Thread 1: Priority 614
    Thread 4: Priority 613
    Thread 1: Priority 613
    Thread 3: Priority 613
    Thread 0: Priority 613
    Thread 2: Priority 613
    Thread 3: Priority 612
    Thread 4: Priority 612
    Thread 1: Priority 612
    Thread 0: Priority 612
    Thread 2: Priority 612
    Thread 3: Priority 611
    Thread 4: Priority 611
    Thread 1: Priority 611
    Thread 0: Priority 611
    Thread 2: Priority 611
    Thread 3: Priority 610
    Thread 4: Priority 610
    Thread 1: Priority 610
    Thread 0: Priority 610
    Thread 2: Priority 610
    Thread 3: Priority 609
    Thread 4: Priority 609
    Thread 1: Priority 609
    Thread 0: Priority 609
    Thread 2: Priority 609
    Thread 3: Priority 608
    Thread 4: Priority 608
    Thread 1: Priority 608
    Thread 0: Priority 608
    Thread 2: Priority 608
    Thread 3: Priority 607
    Thread 4: Priority 607
    Thread 1: Priority 607
    Thread 0: Priority 607
    Thread 2: Priority 607
    Thread 3: Priority 606
    Thread 1: Priority 606
    Thread 4: Priority 606
    Thread 0: Priority 606
    Thread 2: Priority 606
    Thread 3: Priority 605
    Thread 4: Priority 605
    Thread 1: Priority 605
    Thread 2: Priority 605
    Thread 0: Priority 605
    Thread 3: Priority 604
    Thread 4: Priority 604
    Thread 1: Priority 604
    Thread 0: Priority 604
    Thread 2: Priority 604
    Thread 3: Priority 603
    Thread 4: Priority 603
    Thread 1: Priority 603
    Thread 0: Priority 603
    Thread 2: Priority 603
    Thread 3: Priority 602
    Thread 4: Priority 602
    Thread 1: Priority 602
    Thread 0: Priority 602
    Thread 2: Priority 602
    Thread 3: Priority 601
    Thread 4: Priority 601
    Thread 1: Priority 601
    Thread 0: Priority 601
    Thread 2: Priority 601
    Thread 3: Priority 600
    Thread 4: Priority 600
    Thread 1: Priority 600
    Thread 0: Priority 600
    Thread 2: Priority 600
    Thread 3: Priority 599
    Thread 4: Priority 599
    Thread 1: Priority 599
    Thread 0: Priority 599
    Thread 2: Priority 599
    Thread 3: Priority 598
    Thread 4: Priority 598
    Thread 0: Priority 598
    Thread 1: Priority 598
    Thread 2: Priority 598
    Thread 4: Priority 597
    Thread 3: Priority 597
    Thread 1: Priority 597
    Thread 0: Priority 597
    Thread 2: Priority 597
    Thread 3: Priority 596
    Thread 4: Priority 596
    Thread 1: Priority 596
    Thread 0: Priority 596
    Thread 2: Priority 596
    Thread 3: Priority 595
    Thread 4: Priority 595
    Thread 1: Priority 595
    Thread 0: Priority 595
    Thread 2: Priority 595
    Thread 3: Priority 594
    Thread 4: Priority 594
    Thread 0: Priority 594
    Thread 2: Priority 594
    Thread 1: Priority 594
    Thread 3: Priority 593
    Thread 4: Priority 593
    Thread 1: Priority 593
    Thread 0: Priority 593
    Thread 2: Priority 593
    Thread 4: Priority 592
    Thread 1: Priority 592
    Thread 3: Priority 592
    Thread 0: Priority 592
    Thread 2: Priority 592
    Thread 3: Priority 591
    Thread 4: Priority 591
    Thread 1: Priority 591
    Thread 2: Priority 591
    Thread 0: Priority 591
    Thread 3: Priority 590
    Thread 4: Priority 590
    Thread 1: Priority 590
    Thread 0: Priority 590
    Thread 2: Priority 590
    Thread 3: Priority 589
    Thread 4: Priority 589
    Thread 1: Priority 589
    Thread 0: Priority 589
    Thread 2: Priority 589
    Thread 4: Priority 588
    Thread 1: Priority 588
    Thread 0: Priority 588
    Thread 2: Priority 588
    Thread 3: Priority 588
    Thread 3: Priority 587
    Thread 4: Priority 587
    Thread 1: Priority 587
    Thread 0: Priority 587
    Thread 2: Priority 587
    Thread 3: Priority 586
    Thread 4: Priority 586
    Thread 1: Priority 586
    Thread 0: Priority 586
    Thread 2: Priority 586
    Thread 3: Priority 585
    Thread 4: Priority 585
    Thread 1: Priority 585
    Thread 0: Priority 585
    Thread 2: Priority 585
    Thread 3: Priority 584
    Thread 4: Priority 584
    Thread 1: Priority 584
    Thread 0: Priority 584
    Thread 2: Priority 584
    Thread 3: Priority 583
    Thread 4: Priority 583
    Thread 1: Priority 583
    Thread 0: Priority 583
    Thread 2: Priority 583
    Thread 3: Priority 582
    Thread 1: Priority 582
    Thread 4: Priority 582
    Thread 0: Priority 582
    Thread 2: Priority 582
    Thread 4: Priority 581
    Thread 1: Priority 581
    Thread 0: Priority 581
    Thread 2: Priority 581
    Thread 3: Priority 581
    Thread 3: Priority 580
    Thread 4: Priority 580
    Thread 1: Priority 580
    Thread 0: Priority 580
    Thread 2: Priority 580
    Thread 3: Priority 579
    Thread 4: Priority 579
    Thread 2: Priority 579
    Thread 1: Priority 579
    Thread 0: Priority 579
    Thread 3: Priority 578
    Thread 4: Priority 578
    Thread 0: Priority 578
    Thread 1: Priority 578
    Thread 2: Priority 578
    Thread 3: Priority 577
    Thread 4: Priority 577
    Thread 1: Priority 577
    Thread 0: Priority 577
    Thread 2: Priority 577
    Thread 3: Priority 576
    Thread 4: Priority 576
    Thread 1: Priority 576
    Thread 0: Priority 576
    Thread 2: Priority 576
    Thread 4: Priority 575
    Thread 3: Priority 575
    Thread 1: Priority 575
    Thread 0: Priority 575
    Thread 2: Priority 575
    Thread 3: Priority 574
    Thread 4: Priority 574
    Thread 0: Priority 574
    Thread 2: Priority 574
    Thread 1: Priority 574
    Thread 4: Priority 573
    Thread 1: Priority 573
    Thread 3: Priority 573
    Thread 0: Priority 573
    Thread 2: Priority 573
    Thread 3: Priority 572
    Thread 2: Priority 572
    Thread 4: Priority 572
    Thread 1: Priority 572
    Thread 0: Priority 572
    Thread 3: Priority 571
    Thread 4: Priority 571
    Thread 1: Priority 571
    Thread 0: Priority 571
    Thread 2: Priority 571
    Thread 3: Priority 570
    Thread 4: Priority 570
    Thread 1: Priority 570
    Thread 0: Priority 570
    Thread 2: Priority 570
    Thread 3: Priority 569
    Thread 4: Priority 569
    Thread 1: Priority 569
    Thread 0: Priority 569
    Thread 2: Priority 569
    Thread 4: Priority 568
    Thread 3: Priority 568
    Thread 1: Priority 568
    Thread 0: Priority 568
    Thread 2: Priority 568
    Thread 3: Priority 567
    Thread 4: Priority 567
    Thread 1: Priority 567
    Thread 0: Priority 567
    Thread 2: Priority 567
    Thread 4: Priority 566
    Thread 1: Priority 566
    Thread 0: Priority 566
    Thread 2: Priority 566
    Thread 3: Priority 566
    Thread 3: Priority 565
    Thread 4: Priority 565
    Thread 1: Priority 565
    Thread 0: Priority 565
    Thread 2: Priority 565
    Thread 3: Priority 564
    Thread 4: Priority 564
    Thread 1: Priority 564
    Thread 0: Priority 564
    Thread 2: Priority 564
    Thread 4: Priority 563
    Thread 3: Priority 563
    Thread 1: Priority 563
    Thread 0: Priority 563
    Thread 2: Priority 563
    Thread 3: Priority 562
    Thread 1: Priority 562
    Thread 0: Priority 562
    Thread 4: Priority 562
    Thread 2: Priority 562
    Thread 3: Priority 561
    Thread 4: Priority 561
    Thread 1: Priority 561
    Thread 0: Priority 561
    Thread 2: Priority 561
    Thread 3: Priority 560
    Thread 4: Priority 560
    Thread 1: Priority 560
    Thread 0: Priority 560
    Thread 2: Priority 560
    Thread 3: Priority 559
    Thread 4: Priority 559
    Thread 1: Priority 559
    Thread 0: Priority 559
    Thread 2: Priority 559
    Thread 3: Priority 558
    Thread 4: Priority 558
    Thread 0: Priority 558
    Thread 1: Priority 558
    Thread 2: Priority 558
    Thread 3: Priority 557
    Thread 4: Priority 557
    Thread 1: Priority 557
    Thread 0: Priority 557
    Thread 2: Priority 557
    Thread 3: Priority 556
    Thread 4: Priority 556
    Thread 1: Priority 556
    Thread 0: Priority 556
    Thread 2: Priority 556
    Thread 3: Priority 555
    Thread 4: Priority 555
    Thread 2: Priority 555
    Thread 1: Priority 555
    Thread 0: Priority 555
    Thread 4: Priority 554
    Thread 1: Priority 554
    Thread 3: Priority 554
    Thread 0: Priority 554
    Thread 2: Priority 554
    Thread 3: Priority 553
    Thread 1: Priority 553
    Thread 0: Priority 553
    Thread 4: Priority 553
    Thread 2: Priority 553
    Thread 3: Priority 552
    Thread 4: Priority 552
    Thread 1: Priority 552
    Thread 0: Priority 552
    Thread 2: Priority 552
    Thread 3: Priority 551
    Thread 1: Priority 551
    Thread 0: Priority 551
    Thread 4: Priority 551
    Thread 2: Priority 551
    Thread 3: Priority 550
    Thread 4: Priority 550
    Thread 0: Priority 550
    Thread 1: Priority 550
    Thread 2: Priority 550
    Thread 3: Priority 549
    Thread 4: Priority 549
    Thread 1: Priority 549
    Thread 0: Priority 549
    Thread 2: Priority 549
    Thread 3: Priority 548
    Thread 4: Priority 548
    Thread 1: Priority 548
    Thread 0: Priority 548
    Thread 2: Priority 548
    Thread 3: Priority 547
    Thread 4: Priority 547
    Thread 1: Priority 547
    Thread 0: Priority 547
    Thread 2: Priority 547
    Thread 3: Priority 546
    Thread 1: Priority 546
    Thread 4: Priority 546
    Thread 0: Priority 546
    Thread 2: Priority 546
    Thread 3: Priority 545
    Thread 4: Priority 545
    Thread 1: Priority 545
    Thread 0: Priority 545
    Thread 2: Priority 545
    Thread 3: Priority 544
    Thread 4: Priority 544
    Thread 1: Priority 544
    Thread 0: Priority 544
    Thread 2: Priority 544
    Thread 4: Priority 543
    Thread 3: Priority 543
    Thread 1: Priority 543
    Thread 0: Priority 543
    Thread 2: Priority 543
    Thread 3: Priority 542
    Thread 1: Priority 542
    Thread 4: Priority 542
    Thread 0: Priority 542
    Thread 2: Priority 542
    Thread 3: Priority 541
    Thread 4: Priority 541
    Thread 1: Priority 541
    Thread 0: Priority 541
    Thread 2: Priority 541
    Thread 3: Priority 540
    Thread 2: Priority 540
    Thread 4: Priority 540
    Thread 1: Priority 540
    Thread 0: Priority 540
    Thread 3: Priority 539
    Thread 4: Priority 539
    Thread 1: Priority 539
    Thread 0: Priority 539
    Thread 2: Priority 539
    Thread 3: Priority 538
    Thread 4: Priority 538
    Thread 1: Priority 538
    Thread 0: Priority 538
    Thread 2: Priority 538
    Thread 3: Priority 537
    Thread 4: Priority 537
    Thread 1: Priority 537
    Thread 0: Priority 537
    Thread 2: Priority 537
    Thread 4: Priority 536
    Thread 3: Priority 536
    Thread 1: Priority 536
    Thread 0: Priority 536
    Thread 2: Priority 536
    Thread 3: Priority 535
    Thread 1: Priority 535
    Thread 0: Priority 535
    Thread 4: Priority 535
    Thread 2: Priority 535
    Thread 3: Priority 534
    Thread 4: Priority 534
    Thread 0: Priority 534
    Thread 2: Priority 534
    Thread 1: Priority 534
    Thread 3: Priority 533
    Thread 4: Priority 533
    Thread 1: Priority 533
    Thread 0: Priority 533
    Thread 2: Priority 533
    Thread 3: Priority 532
    Thread 4: Priority 532
    Thread 1: Priority 532
    Thread 0: Priority 532
    Thread 2: Priority 532
    Thread 1: Priority 531
    Thread 3: Priority 531
    Thread 0: Priority 531
    Thread 4: Priority 531
    Thread 2: Priority 531
    Thread 3: Priority 530
    Thread 4: Priority 530
    Thread 1: Priority 530
    Thread 0: Priority 530
    Thread 2: Priority 530
    Thread 3: Priority 529
    Thread 4: Priority 529
    Thread 1: Priority 529
    Thread 0: Priority 529
    Thread 2: Priority 529
    Thread 3: Priority 528
    Thread 4: Priority 528
    Thread 1: Priority 528
    Thread 0: Priority 528
    Thread 2: Priority 528
    Thread 4: Priority 527
    Thread 1: Priority 527
    Thread 0: Priority 527
    Thread 2: Priority 527
    Thread 3: Priority 527
    Thread 3: Priority 526
    Thread 1: Priority 526
    Thread 0: Priority 526
    Thread 2: Priority 526
    Thread 4: Priority 526
    Thread 3: Priority 525
    Thread 4: Priority 525
    Thread 1: Priority 525
    Thread 0: Priority 525
    Thread 2: Priority 525
    Thread 3: Priority 524
    Thread 4: Priority 524
    Thread 1: Priority 524
    Thread 2: Priority 524
    Thread 0: Priority 524
    Thread 3: Priority 523
    Thread 4: Priority 523
    Thread 1: Priority 523
    Thread 0: Priority 523
    Thread 2: Priority 523
    Thread 3: Priority 522
    Thread 4: Priority 522
    Thread 2: Priority 522
    Thread 1: Priority 522
    Thread 0: Priority 522
    Thread 4: Priority 521
    Thread 1: Priority 521
    Thread 0: Priority 521
    Thread 3: Priority 521
    Thread 2: Priority 521
    Thread 3: Priority 520
    Thread 4: Priority 520
    Thread 1: Priority 520
    Thread 0: Priority 520
    Thread 2: Priority 520
    Thread 3: Priority 519
    Thread 1: Priority 519
    Thread 4: Priority 519
    Thread 0: Priority 519
    Thread 2: Priority 519
    Thread 3: Priority 518
    Thread 4: Priority 518
    Thread 0: Priority 518
    Thread 1: Priority 518
    Thread 2: Priority 518
    Thread 3: Priority 517
    Thread 2: Priority 517
    Thread 4: Priority 517
    Thread 1: Priority 517
    Thread 0: Priority 517
    Thread 3: Priority 516
    Thread 4: Priority 516
    Thread 1: Priority 516
    Thread 0: Priority 516
    Thread 2: Priority 516
    Thread 3: Priority 515
    Thread 4: Priority 515
    Thread 1: Priority 515
    Thread 0: Priority 515
    Thread 2: Priority 515
    Thread 3: Priority 514
    Thread 4: Priority 514
    Thread 0: Priority 514
    Thread 2: Priority 514
    Thread 1: Priority 514
    Thread 3: Priority 513
    Thread 2: Priority 513
    Thread 0: Priority 513
    Thread 1: Priority 513
    Thread 4: Priority 513
    Thread 3: Priority 512
    Thread 4: Priority 512
    Thread 1: Priority 512
    Thread 0: Priority 512
    Thread 2: Priority 512
    Thread 3: Priority 511
    Thread 2: Priority 511
    Thread 0: Priority 511
    Thread 1: Priority 511
    Thread 4: Priority 511
    Thread 3: Priority 510
    Thread 4: Priority 510
    Thread 2: Priority 510
    Thread 1: Priority 510
    Thread 0: Priority 510
    Thread 4: Priority 509
    Thread 3: Priority 509
    Thread 1: Priority 509
    Thread 0: Priority 509
    Thread 2: Priority 509
    Thread 3: Priority 508
    Thread 4: Priority 508
    Thread 1: Priority 508
    Thread 0: Priority 508
    Thread 2: Priority 508
    Thread 3: Priority 507
    Thread 2: Priority 507
    Thread 4: Priority 507
    Thread 1: Priority 507
    Thread 0: Priority 507
    Thread 3: Priority 506
    Thread 4: Priority 506
    Thread 1: Priority 506
    Thread 0: Priority 506
    Thread 2: Priority 506
    Thread 3: Priority 505
    Thread 4: Priority 505
    Thread 1: Priority 505
    Thread 0: Priority 505
    Thread 2: Priority 505
    Thread 4: Priority 504
    Thread 3: Priority 504
    Thread 1: Priority 504
    Thread 0: Priority 504
    Thread 2: Priority 504
    Thread 3: Priority 503
    Thread 4: Priority 503
    Thread 1: Priority 503
    Thread 0: Priority 503
    Thread 2: Priority 503
    Thread 3: Priority 502
    Thread 4: Priority 502
    Thread 2: Priority 502
    Thread 1: Priority 502
    Thread 0: Priority 502
    Thread 3: Priority 501
    Thread 4: Priority 501
    Thread 1: Priority 501
    Thread 0: Priority 501
    Thread 2: Priority 501
    Thread 3: Priority 500
    Thread 4: Priority 500
    Thread 2: Priority 500
    Thread 1: Priority 500
    Thread 0: Priority 500
    Thread 3: Priority 499
    Thread 4: Priority 499
    Thread 0: Priority 499
    Thread 1: Priority 499
    Thread 2: Priority 499
    Thread 3: Priority 498
    Thread 4: Priority 498
    Thread 1: Priority 498
    Thread 0: Priority 498
    Thread 2: Priority 498
    Thread 3: Priority 497
    Thread 4: Priority 497
    Thread 1: Priority 497
    Thread 0: Priority 497
    Thread 2: Priority 497
    Thread 3: Priority 496
    Thread 4: Priority 496
    Thread 1: Priority 496
    Thread 0: Priority 496
    Thread 2: Priority 496
    Thread 4: Priority 495
    Thread 3: Priority 495
    Thread 0: Priority 495
    Thread 2: Priority 495
    Thread 1: Priority 495
    Thread 3: Priority 494
    Thread 4: Priority 494
    Thread 1: Priority 494
    Thread 0: Priority 494
    Thread 2: Priority 494
    Thread 3: Priority 493
    Thread 4: Priority 493
    Thread 1: Priority 493
    Thread 0: Priority 493
    Thread 2: Priority 493
    Thread 3: Priority 492
    Thread 4: Priority 492
    Thread 1: Priority 492
    Thread 0: Priority 492
    Thread 2: Priority 492
    Thread 3: Priority 491
    Thread 2: Priority 491
    Thread 1: Priority 491
    Thread 0: Priority 491
    Thread 4: Priority 491
    Thread 3: Priority 490
    Thread 4: Priority 490
    Thread 1: Priority 490
    Thread 0: Priority 490
    Thread 2: Priority 490
    Thread 2: Priority 489
    Thread 4: Priority 489
    Thread 1: Priority 489
    Thread 0: Priority 489
    Thread 3: Priority 489
    Thread 3: Priority 488
    Thread 4: Priority 488
    Thread 1: Priority 488
    Thread 0: Priority 488
    Thread 2: Priority 488
    Thread 3: Priority 487
    Thread 1: Priority 487
    Thread 4: Priority 487
    Thread 0: Priority 487
    Thread 2: Priority 487
    Thread 3: Priority 486
    Thread 4: Priority 486
    Thread 1: Priority 486
    Thread 0: Priority 486
    Thread 2: Priority 486
    Thread 3: Priority 485
    Thread 4: Priority 485
    Thread 1: Priority 485
    Thread 0: Priority 485
    Thread 2: Priority 485
    Thread 4: Priority 484
    Thread 1: Priority 484
    Thread 0: Priority 484
    Thread 3: Priority 484
    Thread 2: Priority 484
    Thread 2: Priority 483
    Thread 3: Priority 483
    Thread 1: Priority 483
    Thread 4: Priority 483
    Thread 0: Priority 483
    Thread 1: Priority 482
    Thread 0: Priority 482
    Thread 4: Priority 482
    Thread 2: Priority 482
    Thread 3: Priority 482
    Thread 3: Priority 481
    Thread 4: Priority 481
    Thread 1: Priority 481
    Thread 0: Priority 481
    Thread 2: Priority 481
    Thread 4: Priority 480
    Thread 1: Priority 480
    Thread 0: Priority 480
    Thread 3: Priority 480
    Thread 2: Priority 480
    Thread 3: Priority 479
    Thread 2: Priority 479
    Thread 4: Priority 479
    Thread 0: Priority 479
    Thread 1: Priority 479
    Thread 3: Priority 478
    Thread 4: Priority 478
    Thread 1: Priority 478
    Thread 0: Priority 478
    Thread 2: Priority 478
    Thread 3: Priority 477
    Thread 4: Priority 477
    Thread 1: Priority 477
    Thread 0: Priority 477
    Thread 2: Priority 477
    Thread 4: Priority 476
    Thread 1: Priority 476
    Thread 0: Priority 476
    Thread 2: Priority 476
    Thread 3: Priority 476
    Thread 3: Priority 475
    Thread 2: Priority 475
    Thread 4: Priority 475
    Thread 1: Priority 475
    Thread 0: Priority 475
    Thread 3: Priority 474
    Thread 4: Priority 474
    Thread 1: Priority 474
    Thread 0: Priority 474
    Thread 2: Priority 474
    Thread 3: Priority 473
    Thread 1: Priority 473
    Thread 0: Priority 473
    Thread 2: Priority 473
    Thread 4: Priority 473
    Thread 3: Priority 472
    Thread 2: Priority 472
    Thread 4: Priority 472
    Thread 1: Priority 472
    Thread 0: Priority 472
    Thread 3: Priority 471
    Thread 0: Priority 471
    Thread 1: Priority 471
    Thread 4: Priority 471
    Thread 2: Priority 471
    Thread 4: Priority 470
    Thread 2: Priority 470
    Thread 3: Priority 470
    Thread 1: Priority 470
    Thread 0: Priority 470
    Thread 3: Priority 469
    Thread 1: Priority 469
    Thread 0: Priority 469
    Thread 4: Priority 469
    Thread 2: Priority 469
    Thread 3: Priority 468
    Thread 4: Priority 468
    Thread 1: Priority 468
    Thread 0: Priority 468
    Thread 2: Priority 468
    Thread 3: Priority 467
    Thread 1: Priority 467
    Thread 4: Priority 467
    Thread 0: Priority 467
    Thread 2: Priority 467
    Thread 4: Priority 466
    Thread 2: Priority 466
    Thread 3: Priority 466
    Thread 1: Priority 466
    Thread 0: Priority 466
    Thread 3: Priority 465
    Thread 1: Priority 465
    Thread 0: Priority 465
    Thread 2: Priority 465
    Thread 4: Priority 465
    Thread 3: Priority 464
    Thread 4: Priority 464
    Thread 1: Priority 464
    Thread 0: Priority 464
    Thread 2: Priority 464
    Thread 3: Priority 463
    Thread 1: Priority 463
    Thread 4: Priority 463
    Thread 0: Priority 463
    Thread 2: Priority 463
    Thread 4: Priority 462
    Thread 2: Priority 462
    Thread 1: Priority 462
    Thread 0: Priority 462
    Thread 3: Priority 462
    Thread 3: Priority 461
    Thread 1: Priority 461
    Thread 0: Priority 461
    Thread 4: Priority 461
    Thread 2: Priority 461
    Thread 4: Priority 460
    Thread 1: Priority 460
    Thread 0: Priority 460
    Thread 3: Priority 460
    Thread 2: Priority 460
    Thread 3: Priority 459
    Thread 4: Priority 459
    Thread 1: Priority 459
    Thread 0: Priority 459
    Thread 2: Priority 459
    Thread 3: Priority 458
    Thread 2: Priority 458
    Thread 4: Priority 458
    Thread 1: Priority 458
    Thread 0: Priority 458
    Thread 3: Priority 457
    Thread 2: Priority 457
    Thread 4: Priority 457
    Thread 1: Priority 457
    Thread 0: Priority 457
    Thread 4: Priority 456
    Thread 2: Priority 456
    Thread 1: Priority 456
    Thread 0: Priority 456
    Thread 3: Priority 456
    Thread 3: Priority 455
    Thread 4: Priority 455
    Thread 0: Priority 455
    Thread 2: Priority 455
    Thread 1: Priority 455
    Thread 3: Priority 454
    Thread 4: Priority 454
    Thread 2: Priority 454
    Thread 1: Priority 454
    Thread 0: Priority 454
    Thread 3: Priority 453
    Thread 4: Priority 453
    Thread 1: Priority 453
    Thread 0: Priority 453
    Thread 2: Priority 453
    Thread 4: Priority 452
    Thread 3: Priority 452
    Thread 1: Priority 452
    Thread 0: Priority 452
    Thread 2: Priority 452
    Thread 4: Priority 451
    Thread 1: Priority 451
    Thread 0: Priority 451
    Thread 2: Priority 451
    Thread 3: Priority 451
    Thread 2: Priority 450
    Thread 1: Priority 450
    Thread 4: Priority 450
    Thread 0: Priority 450
    Thread 3: Priority 450
    Thread 4: Priority 449
    Thread 1: Priority 449
    Thread 0: Priority 449
    Thread 2: Priority 449
    Thread 3: Priority 449
    Thread 2: Priority 448
    Thread 4: Priority 448
    Thread 1: Priority 448
    Thread 0: Priority 448
    Thread 3: Priority 448
    Thread 3: Priority 447
    Thread 1: Priority 447
    Thread 4: Priority 447
    Thread 0: Priority 447
    Thread 2: Priority 447
    Thread 4: Priority 446
    Thread 2: Priority 446
    Thread 1: Priority 446
    Thread 0: Priority 446
    Thread 3: Priority 446
    Thread 1: Priority 445
    Thread 0: Priority 445
    Thread 2: Priority 445
    Thread 4: Priority 445
    Thread 3: Priority 445
    Thread 4: Priority 444
    Thread 1: Priority 444
    Thread 0: Priority 444
    Thread 2: Priority 444
    Thread 3: Priority 444
    Thread 2: Priority 443
    Thread 4: Priority 443
    Thread 3: Priority 443
    Thread 1: Priority 443
    Thread 0: Priority 443
    Thread 4: Priority 442
    Thread 1: Priority 442
    Thread 2: Priority 442
    Thread 0: Priority 442
    Thread 3: Priority 442
    Thread 4: Priority 441
    Thread 2: Priority 441
    Thread 1: Priority 441
    Thread 0: Priority 441
    Thread 3: Priority 441
    Thread 2: Priority 440
    Thread 4: Priority 440
    Thread 1: Priority 440
    Thread 0: Priority 440
    Thread 3: Priority 440
    Thread 4: Priority 439
    Thread 0: Priority 439
    Thread 1: Priority 439
    Thread 2: Priority 439
    Thread 3: Priority 439
    Thread 0: Priority 438
    Thread 4: Priority 438
    Thread 1: Priority 438
    Thread 2: Priority 438
    Thread 3: Priority 438
    Thread 4: Priority 437
    Thread 0: Priority 437
    Thread 1: Priority 437
    Thread 2: Priority 437
    Thread 3: Priority 437
    Thread 2: Priority 436
    Thread 4: Priority 436
    Thread 1: Priority 436
    Thread 0: Priority 436
    Thread 3: Priority 436
    Thread 0: Priority 435
    Thread 4: Priority 435
    Thread 3: Priority 435
    Thread 2: Priority 435
    Thread 1: Priority 435
    Thread 2: Priority 434
    Thread 4: Priority 434
    Thread 1: Priority 434
    Thread 0: Priority 434
    Thread 3: Priority 434
    Thread 4: Priority 433
    Thread 1: Priority 433
    Thread 0: Priority 433
    Thread 2: Priority 433
    Thread 3: Priority 433
    Thread 4: Priority 432
    Thread 1: Priority 432
    Thread 0: Priority 432
    Thread 2: Priority 432
    Thread 3: Priority 432
    Thread 4: Priority 431
    Thread 1: Priority 431
    Thread 2: Priority 431
    Thread 0: Priority 431
    Thread 3: Priority 431
    Thread 4: Priority 430
    Thread 2: Priority 430
    Thread 1: Priority 430
    Thread 0: Priority 430
    Thread 3: Priority 430
    Thread 4: Priority 429
    Thread 0: Priority 429
    Thread 1: Priority 429
    Thread 2: Priority 429
    Thread 3: Priority 429
    Thread 4: Priority 428
    Thread 1: Priority 428
    Thread 0: Priority 428
    Thread 2: Priority 428
    Thread 3: Priority 428
    Thread 4: Priority 427
    Thread 0: Priority 427
    Thread 1: Priority 427
    Thread 3: Priority 427
    Thread 2: Priority 427
    Thread 0: Priority 426
    Thread 4: Priority 426
    Thread 1: Priority 426
    Thread 2: Priority 426
    Thread 3: Priority 426
    Thread 0: Priority 425
    Thread 2: Priority 425
    Thread 4: Priority 425
    Thread 1: Priority 425
    Thread 3: Priority 425
    Thread 4: Priority 424
    Thread 1: Priority 424
    Thread 0: Priority 424
    Thread 2: Priority 424
    Thread 3: Priority 424
    Thread 4: Priority 423
    Thread 1: Priority 423
    Thread 0: Priority 423
    Thread 2: Priority 423
    Thread 3: Priority 423
    Thread 2: Priority 422
    Thread 4: Priority 422
    Thread 1: Priority 422
    Thread 3: Priority 422
    Thread 0: Priority 422
    Thread 1: Priority 421
    Thread 4: Priority 421
    Thread 0: Priority 421
    Thread 2: Priority 421
    Thread 3: Priority 421
    Thread 4: Priority 420
    Thread 2: Priority 420
    Thread 1: Priority 420
    Thread 0: Priority 420
    Thread 3: Priority 420
    Thread 4: Priority 419
    Thread 0: Priority 419
    Thread 1: Priority 419
    Thread 2: Priority 419
    Thread 3: Priority 419
    Thread 3: Priority 418
    Thread 0: Priority 418
    Thread 4: Priority 418
    Thread 1: Priority 418
    Thread 2: Priority 418
    Thread 2: Priority 417
    Thread 0: Priority 417
    Thread 1: Priority 417
    Thread 4: Priority 417
    Thread 3: Priority 417
    Thread 4: Priority 416
    Thread 2: Priority 416
    Thread 1: Priority 416
    Thread 0: Priority 416
    Thread 3: Priority 416
    Thread 4: Priority 415
    Thread 0: Priority 415
    Thread 2: Priority 415
    Thread 3: Priority 415
    Thread 1: Priority 415
    Thread 2: Priority 414
    Thread 4: Priority 414
    Thread 1: Priority 414
    Thread 0: Priority 414
    Thread 3: Priority 414
    Thread 4: Priority 413
    Thread 1: Priority 413
    Thread 2: Priority 413
    Thread 3: Priority 413
    Thread 0: Priority 413
    Thread 4: Priority 412
    Thread 3: Priority 412
    Thread 1: Priority 412
    Thread 0: Priority 412
    Thread 2: Priority 412
    Thread 4: Priority 411
    Thread 1: Priority 411
    Thread 2: Priority 411
    Thread 3: Priority 411
    Thread 0: Priority 411
    Thread 4: Priority 410
    Thread 0: Priority 410
    Thread 1: Priority 410
    Thread 2: Priority 410
    Thread 3: Priority 410
    Thread 4: Priority 409
    Thread 1: Priority 409
    Thread 0: Priority 409
    Thread 2: Priority 409
    Thread 3: Priority 409
    Thread 3: Priority 408
    Thread 4: Priority 408
    Thread 1: Priority 408
    Thread 0: Priority 408
    Thread 2: Priority 408
    Thread 1: Priority 407
    Thread 4: Priority 407
    Thread 0: Priority 407
    Thread 2: Priority 407
    Thread 3: Priority 407
    Thread 4: Priority 406
    Thread 2: Priority 406
    Thread 0: Priority 406
    Thread 1: Priority 406
    Thread 3: Priority 406
    Thread 3: Priority 405
    Thread 1: Priority 405
    Thread 0: Priority 405
    Thread 2: Priority 405
    Thread 4: Priority 405
    Thread 2: Priority 404
    Thread 4: Priority 404
    Thread 1: Priority 404
    Thread 0: Priority 404
    Thread 3: Priority 404
    Thread 4: Priority 403
    Thread 1: Priority 403
    Thread 0: Priority 403
    Thread 2: Priority 403
    Thread 3: Priority 403
    Thread 3: Priority 402
    Thread 1: Priority 402
    Thread 2: Priority 402
    Thread 4: Priority 402
    Thread 0: Priority 402
    Thread 4: Priority 401
    Thread 1: Priority 401
    Thread 2: Priority 401
    Thread 3: Priority 401
    Thread 0: Priority 401
    Thread 4: Priority 400
    Thread 3: Priority 400
    Thread 1: Priority 400
    Thread 0: Priority 400
    Thread 2: Priority 400
    Thread 4: Priority 399
    Thread 2: Priority 399
    Thread 0: Priority 399
    Thread 1: Priority 399
    Thread 3: Priority 399
    Thread 4: Priority 398
    Thread 1: Priority 398
    Thread 0: Priority 398
    Thread 2: Priority 398
    Thread 3: Priority 398
    Thread 0: Priority 397
    Thread 4: Priority 397
    Thread 1: Priority 397
    Thread 2: Priority 397
    Thread 3: Priority 397
    Thread 4: Priority 396
    Thread 1: Priority 396
    Thread 0: Priority 396
    Thread 2: Priority 396
    Thread 3: Priority 396
    Thread 0: Priority 395
    Thread 4: Priority 395
    Thread 2: Priority 395
    Thread 1: Priority 395
    Thread 3: Priority 395
    Thread 4: Priority 394
    Thread 3: Priority 394
    Thread 1: Priority 394
    Thread 0: Priority 394
    Thread 2: Priority 394
    Thread 4: Priority 393
    Thread 1: Priority 393
    Thread 2: Priority 393
    Thread 0: Priority 393
    Thread 3: Priority 393
    Thread 2: Priority 392
    Thread 4: Priority 392
    Thread 1: Priority 392
    Thread 0: Priority 392
    Thread 3: Priority 392
    Thread 1: Priority 391
    Thread 4: Priority 391
    Thread 2: Priority 391
    Thread 3: Priority 391
    Thread 0: Priority 391
    Thread 4: Priority 390
    Thread 2: Priority 390
    Thread 1: Priority 390
    Thread 0: Priority 390
    Thread 3: Priority 390
    Thread 4: Priority 389
    Thread 0: Priority 389
    Thread 1: Priority 389
    Thread 2: Priority 389
    Thread 3: Priority 389
    Thread 4: Priority 388
    Thread 3: Priority 388
    Thread 1: Priority 388
    Thread 0: Priority 388
    Thread 2: Priority 388
    Thread 0: Priority 387
    Thread 1: Priority 387
    Thread 4: Priority 387
    Thread 2: Priority 387
    Thread 3: Priority 387
    Thread 0: Priority 386
    Thread 2: Priority 386
    Thread 4: Priority 386
    Thread 1: Priority 386
    Thread 3: Priority 386
    Thread 2: Priority 385
    Thread 4: Priority 385
    Thread 0: Priority 385
    Thread 1: Priority 385
    Thread 3: Priority 385
    Thread 4: Priority 384
    Thread 1: Priority 384
    Thread 0: Priority 384
    Thread 2: Priority 384
    Thread 3: Priority 384
    Thread 3: Priority 383
    Thread 4: Priority 383
    Thread 1: Priority 383
    Thread 0: Priority 383
    Thread 2: Priority 383
    Thread 4: Priority 382
    Thread 1: Priority 382
    Thread 0: Priority 382
    Thread 2: Priority 382
    Thread 3: Priority 382
    Thread 4: Priority 381
    Thread 1: Priority 381
    Thread 0: Priority 381
    Thread 2: Priority 381
    Thread 3: Priority 381
    Thread 4: Priority 380
    Thread 3: Priority 380
    Thread 1: Priority 380
    Thread 0: Priority 380
    Thread 2: Priority 380
    Thread 4: Priority 379
    Thread 2: Priority 379
    Thread 1: Priority 379
    Thread 0: Priority 379
    Thread 3: Priority 379
    Thread 3: Priority 378
    Thread 4: Priority 378
    Thread 0: Priority 378
    Thread 2: Priority 378
    Thread 1: Priority 378
    Thread 2: Priority 377
    Thread 4: Priority 377
    Thread 0: Priority 377
    Thread 1: Priority 377
    Thread 3: Priority 377
    Thread 2: Priority 376
    Thread 1: Priority 376
    Thread 0: Priority 376
    Thread 4: Priority 376
    Thread 3: Priority 376
    Thread 0: Priority 375
    Thread 4: Priority 375
    Thread 1: Priority 375
    Thread 2: Priority 375
    Thread 3: Priority 375
    Thread 2: Priority 374
    Thread 4: Priority 374
    Thread 3: Priority 374
    Thread 1: Priority 374
    Thread 0: Priority 374
    Thread 4: Priority 373
    Thread 1: Priority 373
    Thread 2: Priority 373
    Thread 3: Priority 373
    Thread 0: Priority 373
    Thread 1: Priority 372
    Thread 0: Priority 372
    Thread 2: Priority 372
    Thread 4: Priority 372
    Thread 3: Priority 372
    Thread 4: Priority 371
    Thread 3: Priority 371
    Thread 1: Priority 371
    Thread 2: Priority 371
    Thread 0: Priority 371
    Thread 1: Priority 370
    Thread 2: Priority 370
    Thread 3: Priority 370
    Thread 4: Priority 370
    Thread 0: Priority 370
    Thread 4: Priority 369
    Thread 1: Priority 369
    Thread 0: Priority 369
    Thread 2: Priority 369
    Thread 3: Priority 369
    Thread 4: Priority 368
    Thread 1: Priority 368
    Thread 0: Priority 368
    Thread 2: Priority 368
    Thread 3: Priority 368
    Thread 4: Priority 367
    Thread 0: Priority 367
    Thread 1: Priority 367
    Thread 2: Priority 367
    Thread 3: Priority 367
    Thread 4: Priority 366
    Thread 2: Priority 366
    Thread 1: Priority 366
    Thread 0: Priority 366
    Thread 3: Priority 366
    Thread 4: Priority 365
    Thread 1: Priority 365
    Thread 0: Priority 365
    Thread 2: Priority 365
    Thread 3: Priority 365
    Thread 4: Priority 364
    Thread 1: Priority 364
    Thread 0: Priority 364
    Thread 2: Priority 364
    Thread 3: Priority 364
    Thread 4: Priority 363
    Thread 3: Priority 363
    Thread 2: Priority 363
    Thread 1: Priority 363
    Thread 0: Priority 363
    Thread 3: Priority 362
    Thread 4: Priority 362
    Thread 1: Priority 362
    Thread 2: Priority 362
    Thread 0: Priority 362
    Thread 4: Priority 361
    Thread 2: Priority 361
    Thread 1: Priority 361
    Thread 3: Priority 361
    Thread 0: Priority 361
    Thread 2: Priority 360
    Thread 4: Priority 360
    Thread 0: Priority 360
    Thread 3: Priority 360
    Thread 1: Priority 360
    Thread 0: Priority 359
    Thread 4: Priority 359
    Thread 3: Priority 359
    Thread 1: Priority 359
    Thread 2: Priority 359
    Thread 1: Priority 358
    Thread 3: Priority 358
    Thread 4: Priority 358
    Thread 0: Priority 358
    Thread 2: Priority 358
    Thread 1: Priority 357
    Thread 4: Priority 357
    Thread 0: Priority 357
    Thread 2: Priority 357
    Thread 3: Priority 357
    Thread 2: Priority 356
    Thread 1: Priority 356
    Thread 3: Priority 356
    Thread 4: Priority 356
    Thread 0: Priority 356
    Thread 4: Priority 355
    Thread 1: Priority 355
    Thread 0: Priority 355
    Thread 2: Priority 355
    Thread 3: Priority 355
    Thread 2: Priority 354
    Thread 4: Priority 354
    Thread 1: Priority 354
    Thread 0: Priority 354
    Thread 3: Priority 354
    Thread 4: Priority 353
    Thread 1: Priority 353
    Thread 0: Priority 353
    Thread 2: Priority 353
    Thread 3: Priority 353
    Thread 2: Priority 352
    Thread 0: Priority 352
    Thread 1: Priority 352
    Thread 4: Priority 352
    Thread 3: Priority 352
    Thread 4: Priority 351
    Thread 1: Priority 351
    Thread 0: Priority 351
    Thread 2: Priority 351
    Thread 3: Priority 351
    Thread 4: Priority 350
    Thread 0: Priority 350
    Thread 2: Priority 350
    Thread 3: Priority 350
    Thread 1: Priority 350
    Thread 4: Priority 349
    Thread 0: Priority 349
    Thread 1: Priority 349
    Thread 3: Priority 349
    Thread 2: Priority 349
    Thread 0: Priority 348
    Thread 4: Priority 348
    Thread 1: Priority 348
    Thread 2: Priority 348
    Thread 3: Priority 348
    Thread 4: Priority 347
    Thread 1: Priority 347
    Thread 0: Priority 347
    Thread 2: Priority 347
    Thread 3: Priority 347
    Thread 1: Priority 346
    Thread 0: Priority 346
    Thread 2: Priority 346
    Thread 4: Priority 346
    Thread 3: Priority 346
    Thread 4: Priority 345
    Thread 1: Priority 345
    Thread 3: Priority 345
    Thread 2: Priority 345
    Thread 0: Priority 345
    Thread 2: Priority 344
    Thread 3: Priority 344
    Thread 1: Priority 344
    Thread 4: Priority 344
    Thread 0: Priority 344
    Thread 0: Priority 343
    Thread 1: Priority 343
    Thread 4: Priority 343
    Thread 2: Priority 343
    Thread 3: Priority 343
    Thread 2: Priority 342
    Thread 1: Priority 342
    Thread 0: Priority 342
    Thread 3: Priority 342
    Thread 4: Priority 342
    Thread 4: Priority 341
    Thread 0: Priority 341
    Thread 1: Priority 341
    Thread 3: Priority 341
    Thread 2: Priority 341
    Thread 4: Priority 340
    Thread 0: Priority 340
    Thread 1: Priority 340
    Thread 2: Priority 340
    Thread 3: Priority 340
    Thread 1: Priority 339
    Thread 2: Priority 339
    Thread 4: Priority 339
    Thread 0: Priority 339
    Thread 3: Priority 339
    Thread 4: Priority 338
    Thread 0: Priority 338
    Thread 1: Priority 338
    Thread 2: Priority 338
    Thread 3: Priority 338
    Thread 4: Priority 337
    Thread 1: Priority 337
    Thread 0: Priority 337
    Thread 2: Priority 337
    Thread 3: Priority 337
    Thread 4: Priority 336
    Thread 1: Priority 336
    Thread 2: Priority 336
    Thread 3: Priority 336
    Thread 0: Priority 336
    Thread 4: Priority 335
    Thread 0: Priority 335
    Thread 2: Priority 335
    Thread 1: Priority 335
    Thread 3: Priority 335
    Thread 2: Priority 334
    Thread 1: Priority 334
    Thread 3: Priority 334
    Thread 4: Priority 334
    Thread 0: Priority 334
    Thread 4: Priority 333
    Thread 3: Priority 333
    Thread 1: Priority 333
    Thread 2: Priority 333
    Thread 0: Priority 333
    Thread 4: Priority 332
    Thread 3: Priority 332
    Thread 1: Priority 332
    Thread 0: Priority 332
    Thread 2: Priority 332
    Thread 2: Priority 331
    Thread 4: Priority 331
    Thread 1: Priority 331
    Thread 0: Priority 331
    Thread 3: Priority 331
    Thread 1: Priority 330
    Thread 2: Priority 330
    Thread 4: Priority 330
    Thread 0: Priority 330
    Thread 3: Priority 330
    Thread 4: Priority 329
    Thread 0: Priority 329
    Thread 1: Priority 329
    Thread 2: Priority 329
    Thread 3: Priority 329
    Thread 1: Priority 328
    Thread 2: Priority 328
    Thread 4: Priority 328
    Thread 3: Priority 328
    Thread 0: Priority 328
    Thread 4: Priority 327
    Thread 0: Priority 327
    Thread 1: Priority 327
    Thread 2: Priority 327
    Thread 3: Priority 327
    Thread 2: Priority 326
    Thread 4: Priority 326
    Thread 1: Priority 326
    Thread 0: Priority 326
    Thread 3: Priority 326
    Thread 4: Priority 325
    Thread 1: Priority 325
    Thread 3: Priority 325
    Thread 0: Priority 325
    Thread 2: Priority 325
    Thread 2: Priority 324
    Thread 1: Priority 324
    Thread 3: Priority 324
    Thread 4: Priority 324
    Thread 0: Priority 324
    Thread 1: Priority 323
    Thread 0: Priority 323
    Thread 4: Priority 323
    Thread 2: Priority 323
    Thread 3: Priority 323
    Thread 4: Priority 322
    Thread 0: Priority 322
    Thread 1: Priority 322
    Thread 2: Priority 322
    Thread 3: Priority 322
    Thread 4: Priority 321
    Thread 2: Priority 321
    Thread 0: Priority 321
    Thread 1: Priority 321
    Thread 3: Priority 321
    Thread 2: Priority 320
    Thread 0: Priority 320
    Thread 1: Priority 320
    Thread 3: Priority 320
    Thread 4: Priority 320
    Thread 3: Priority 319
    Thread 0: Priority 319
    Thread 1: Priority 319
    Thread 4: Priority 319
    Thread 2: Priority 319
    Thread 0: Priority 318
    Thread 4: Priority 318
    Thread 1: Priority 318
    Thread 2: Priority 318
    Thread 3: Priority 318
    Thread 4: Priority 317
    Thread 3: Priority 317
    Thread 0: Priority 317
    Thread 2: Priority 317
    Thread 1: Priority 317
    Thread 2: Priority 316
    Thread 4: Priority 316
    Thread 1: Priority 316
    Thread 0: Priority 316
    Thread 3: Priority 316
    Thread 2: Priority 315
    Thread 4: Priority 315
    Thread 1: Priority 315
    Thread 0: Priority 315
    Thread 3: Priority 315
    Thread 1: Priority 314
    Thread 4: Priority 314
    Thread 2: Priority 314
    Thread 3: Priority 314
    Thread 0: Priority 314
    Thread 4: Priority 313
    Thread 1: Priority 313
    Thread 0: Priority 313
    Thread 2: Priority 313
    Thread 3: Priority 313
    Thread 1: Priority 312
    Thread 3: Priority 312
    Thread 4: Priority 312
    Thread 2: Priority 312
    Thread 0: Priority 312
    Thread 4: Priority 311
    Thread 0: Priority 311
    Thread 1: Priority 311
    Thread 2: Priority 311
    Thread 3: Priority 311
    Thread 1: Priority 310
    Thread 0: Priority 310
    Thread 2: Priority 310
    Thread 3: Priority 310
    Thread 4: Priority 310
    Thread 0: Priority 309
    Thread 4: Priority 309
    Thread 3: Priority 309
    Thread 1: Priority 309
    Thread 2: Priority 309
    Thread 2: Priority 308
    Thread 4: Priority 308
    Thread 1: Priority 308
    Thread 3: Priority 308
    Thread 0: Priority 308
    Thread 4: Priority 307
    Thread 0: Priority 307
    Thread 2: Priority 307
    Thread 1: Priority 307
    Thread 3: Priority 307
    Thread 1: Priority 306
    Thread 2: Priority 306
    Thread 4: Priority 306
    Thread 0: Priority 306
    Thread 3: Priority 306
    Thread 4: Priority 305
    Thread 2: Priority 305
    Thread 1: Priority 305
    Thread 0: Priority 305
    Thread 3: Priority 305
    Thread 4: Priority 304
    Thread 1: Priority 304
    Thread 2: Priority 304
    Thread 0: Priority 304
    Thread 3: Priority 304
    Thread 3: Priority 303
    Thread 1: Priority 303
    Thread 2: Priority 303
    Thread 0: Priority 303
    Thread 4: Priority 303
    Thread 1: Priority 302
    Thread 3: Priority 302
    Thread 2: Priority 302
    Thread 0: Priority 302
    Thread 4: Priority 302
    Thread 4: Priority 301
    Thread 1: Priority 301
    Thread 2: Priority 301
    Thread 0: Priority 301
    Thread 3: Priority 301
    Thread 1: Priority 300
    Thread 3: Priority 300
    Thread 2: Priority 300
    Thread 0: Priority 300
    Thread 4: Priority 300
    Thread 4: Priority 299
    Thread 2: Priority 299
    Thread 1: Priority 299
    Thread 0: Priority 299
    Thread 3: Priority 299
    Thread 2: Priority 298
    Thread 4: Priority 298
    Thread 1: Priority 298
    Thread 3: Priority 298
    Thread 0: Priority 298
    Thread 4: Priority 297
    Thread 2: Priority 297
    Thread 0: Priority 297
    Thread 1: Priority 297
    Thread 3: Priority 297
    Thread 1: Priority 296
    Thread 2: Priority 296
    Thread 4: Priority 296
    Thread 0: Priority 296
    Thread 3: Priority 296
    Thread 4: Priority 295
    Thread 1: Priority 295
    Thread 2: Priority 295
    Thread 0: Priority 295
    Thread 3: Priority 295
    Thread 3: Priority 294
    Thread 4: Priority 294
    Thread 2: Priority 294
    Thread 1: Priority 294
    Thread 0: Priority 294
    Thread 4: Priority 293
    Thread 1: Priority 293
    Thread 2: Priority 293
    Thread 0: Priority 293
    Thread 3: Priority 293
    Thread 1: Priority 292
    Thread 3: Priority 292
    Thread 2: Priority 292
    Thread 0: Priority 292
    Thread 4: Priority 292
    Thread 3: Priority 291
    Thread 4: Priority 291
    Thread 2: Priority 291
    Thread 0: Priority 291
    Thread 1: Priority 291
    Thread 4: Priority 290
    Thread 2: Priority 290
    Thread 1: Priority 290
    Thread 0: Priority 290
    Thread 3: Priority 290
    Thread 3: Priority 289
    Thread 4: Priority 289
    Thread 2: Priority 289
    Thread 0: Priority 289
    Thread 1: Priority 289
    Thread 4: Priority 288
    Thread 1: Priority 288
    Thread 2: Priority 288
    Thread 0: Priority 288
    Thread 3: Priority 288
    Thread 1: Priority 287
    Thread 2: Priority 287
    Thread 4: Priority 287
    Thread 0: Priority 287
    Thread 3: Priority 287
    Thread 3: Priority 286
    Thread 1: Priority 286
    Thread 2: Priority 286
    Thread 4: Priority 286
    Thread 0: Priority 286
    Thread 3: Priority 285
    Thread 2: Priority 285
    Thread 0: Priority 285
    Thread 1: Priority 285
    Thread 4: Priority 285
    Thread 4: Priority 284
    Thread 1: Priority 284
    Thread 2: Priority 284
    Thread 0: Priority 284
    Thread 3: Priority 284
    Thread 4: Priority 283
    Thread 1: Priority 283
    Thread 2: Priority 283
    Thread 0: Priority 283
    Thread 3: Priority 283
    Thread 1: Priority 282
    Thread 4: Priority 282
    Thread 0: Priority 282
    Thread 2: Priority 282
    Thread 3: Priority 282
    Thread 4: Priority 281
    Thread 1: Priority 281
    Thread 0: Priority 281
    Thread 2: Priority 281
    Thread 3: Priority 281
    Thread 4: Priority 280
    Thread 3: Priority 280
    Thread 1: Priority 280
    Thread 0: Priority 280
    Thread 2: Priority 280
    Thread 1: Priority 279
    Thread 4: Priority 279
    Thread 0: Priority 279
    Thread 3: Priority 279
    Thread 2: Priority 279
    Thread 3: Priority 278
    Thread 4: Priority 278
    Thread 2: Priority 278
    Thread 0: Priority 278
    Thread 1: Priority 278
    Thread 4: Priority 277
    Thread 0: Priority 277
    Thread 2: Priority 277
    Thread 1: Priority 277
    Thread 3: Priority 277
    Thread 1: Priority 276
    Thread 4: Priority 276
    Thread 3: Priority 276
    Thread 2: Priority 276
    Thread 0: Priority 276
    Thread 4: Priority 275
    Thread 0: Priority 275
    Thread 1: Priority 275
    Thread 2: Priority 275
    Thread 3: Priority 275
    Thread 2: Priority 274
    Thread 0: Priority 274
    Thread 3: Priority 274
    Thread 1: Priority 274
    Thread 4: Priority 274
    Thread 4: Priority 273
    Thread 1: Priority 273
    Thread 2: Priority 273
    Thread 0: Priority 273
    Thread 3: Priority 273
    Thread 1: Priority 272
    Thread 0: Priority 272
    Thread 2: Priority 272
    Thread 3: Priority 272
    Thread 4: Priority 272
    Thread 2: Priority 271
    Thread 4: Priority 271
    Thread 0: Priority 271
    Thread 1: Priority 271
    Thread 3: Priority 271
    Thread 4: Priority 270
    Thread 3: Priority 270
    Thread 2: Priority 270
    Thread 0: Priority 270
    Thread 1: Priority 270
    Thread 4: Priority 269
    Thread 1: Priority 269
    Thread 0: Priority 269
    Thread 2: Priority 269
    Thread 3: Priority 269
    Thread 1: Priority 268
    Thread 2: Priority 268
    Thread 0: Priority 268
    Thread 3: Priority 268
    Thread 4: Priority 268
    Thread 4: Priority 267
    Thread 1: Priority 267
    Thread 2: Priority 267
    Thread 3: Priority 267
    Thread 0: Priority 267
    Thread 4: Priority 266
    Thread 3: Priority 266
    Thread 1: Priority 266
    Thread 0: Priority 266
    Thread 2: Priority 266
    Thread 2: Priority 265
    Thread 1: Priority 265
    Thread 4: Priority 265
    Thread 0: Priority 265
    Thread 3: Priority 265
    Thread 3: Priority 264
    Thread 1: Priority 264
    Thread 0: Priority 264
    Thread 4: Priority 264
    Thread 2: Priority 264
    Thread 3: Priority 263
    Thread 1: Priority 263
    Thread 0: Priority 263
    Thread 4: Priority 263
    Thread 2: Priority 263
    Thread 4: Priority 262
    Thread 1: Priority 262
    Thread 0: Priority 262
    Thread 3: Priority 262
    Thread 2: Priority 262
    Thread 1: Priority 261
    Thread 4: Priority 261
    Thread 0: Priority 261
    Thread 3: Priority 261
    Thread 2: Priority 261
    Thread 0: Priority 260
    Thread 3: Priority 260
    Thread 4: Priority 260
    Thread 1: Priority 260
    Thread 2: Priority 260
    Thread 2: Priority 259
    Thread 0: Priority 259
    Thread 4: Priority 259
    Thread 3: Priority 259
    Thread 1: Priority 259
    Thread 2: Priority 258
    Thread 4: Priority 258
    Thread 3: Priority 258
    Thread 0: Priority 258
    Thread 1: Priority 258
    Thread 2: Priority 257
    Thread 3: Priority 257
    Thread 1: Priority 257
    Thread 0: Priority 257
    Thread 4: Priority 257
    Thread 2: Priority 256
    Thread 4: Priority 256
    Thread 1: Priority 256
    Thread 0: Priority 256
    Thread 3: Priority 256
    Thread 1: Priority 255
    Thread 0: Priority 255
    Thread 3: Priority 255
    Thread 2: Priority 255
    Thread 4: Priority 255
    Thread 0: Priority 254
    Thread 4: Priority 254
    Thread 3: Priority 254
    Thread 1: Priority 254
    Thread 2: Priority 254
    Thread 1: Priority 253
    Thread 2: Priority 253
    Thread 4: Priority 253
    Thread 0: Priority 253
    Thread 3: Priority 253
    Thread 4: Priority 252
    Thread 0: Priority 252
    Thread 2: Priority 252
    Thread 3: Priority 252
    Thread 1: Priority 252
    Thread 4: Priority 251
    Thread 2: Priority 251
    Thread 0: Priority 251
    Thread 3: Priority 251
    Thread 1: Priority 251
    Thread 0: Priority 250
    Thread 1: Priority 250
    Thread 2: Priority 250
    Thread 3: Priority 250
    Thread 4: Priority 250
    Thread 1: Priority 249
    Thread 2: Priority 249
    Thread 3: Priority 249
    Thread 0: Priority 249
    Thread 4: Priority 249
    Thread 4: Priority 248
    Thread 2: Priority 248
    Thread 0: Priority 248
    Thread 3: Priority 248
    Thread 1: Priority 248
    Thread 4: Priority 247
    Thread 0: Priority 247
    Thread 2: Priority 247
    Thread 3: Priority 247
    Thread 1: Priority 247
    Thread 2: Priority 246
    Thread 1: Priority 246
    Thread 3: Priority 246
    Thread 0: Priority 246
    Thread 4: Priority 246
    Thread 1: Priority 245
    Thread 2: Priority 245
    Thread 0: Priority 245
    Thread 3: Priority 245
    Thread 4: Priority 245
    Thread 4: Priority 244
    Thread 0: Priority 244
    Thread 1: Priority 244
    Thread 3: Priority 244
    Thread 2: Priority 244
    Thread 0: Priority 243
    Thread 3: Priority 243
    Thread 1: Priority 243
    Thread 2: Priority 243
    Thread 4: Priority 243
    Thread 4: Priority 242
    Thread 3: Priority 242
    Thread 0: Priority 242
    Thread 2: Priority 242
    Thread 1: Priority 242
    Thread 0: Priority 241
    Thread 4: Priority 241
    Thread 2: Priority 241
    Thread 1: Priority 241
    Thread 3: Priority 241
    Thread 2: Priority 240
    Thread 1: Priority 240
    Thread 0: Priority 240
    Thread 3: Priority 240
    Thread 4: Priority 240
    Thread 4: Priority 239
    Thread 1: Priority 239
    Thread 3: Priority 239
    Thread 0: Priority 239
    Thread 2: Priority 239
    Thread 0: Priority 238
    Thread 3: Priority 238
    Thread 1: Priority 238
    Thread 2: Priority 238
    Thread 4: Priority 238
    Thread 4: Priority 237
    Thread 2: Priority 237
    Thread 0: Priority 237
    Thread 3: Priority 237
    Thread 1: Priority 237
    Thread 3: Priority 236
    Thread 0: Priority 236
    Thread 2: Priority 236
    Thread 4: Priority 236
    Thread 1: Priority 236
    Thread 1: Priority 235
    Thread 0: Priority 235
    Thread 3: Priority 235
    Thread 2: Priority 235
    Thread 4: Priority 235
    Thread 4: Priority 234
    Thread 1: Priority 234
    Thread 2: Priority 234
    Thread 0: Priority 234
    Thread 3: Priority 234
    Thread 4: Priority 233
    Thread 0: Priority 233
    Thread 3: Priority 233
    Thread 1: Priority 233
    Thread 2: Priority 233
    Thread 4: Priority 232
    Thread 0: Priority 232
    Thread 3: Priority 232
    Thread 2: Priority 232
    Thread 1: Priority 232
    Thread 2: Priority 231
    Thread 0: Priority 231
    Thread 1: Priority 231
    Thread 3: Priority 231
    Thread 4: Priority 231
    Thread 4: Priority 230
    Thread 0: Priority 230
    Thread 3: Priority 230
    Thread 1: Priority 230
    Thread 2: Priority 230
    Thread 4: Priority 229
    Thread 1: Priority 229
    Thread 0: Priority 229
    Thread 3: Priority 229
    Thread 2: Priority 229
    Thread 0: Priority 228
    Thread 4: Priority 228
    Thread 3: Priority 228
    Thread 1: Priority 228
    Thread 2: Priority 228
    Thread 1: Priority 227
    Thread 0: Priority 227
    Thread 3: Priority 227
    Thread 4: Priority 227
    Thread 2: Priority 227
    Thread 2: Priority 226
    Thread 4: Priority 226
    Thread 0: Priority 226
    Thread 3: Priority 226
    Thread 1: Priority 226
    Thread 0: Priority 225
    Thread 3: Priority 225
    Thread 1: Priority 225
    Thread 2: Priority 225
    Thread 4: Priority 225
    Thread 0: Priority 224
    Thread 4: Priority 224
    Thread 3: Priority 224
    Thread 2: Priority 224
    Thread 1: Priority 224
    Thread 0: Priority 223
    Thread 3: Priority 223
    Thread 4: Priority 223
    Thread 2: Priority 223
    Thread 1: Priority 223
    Thread 1: Priority 222
    Thread 0: Priority 222
    Thread 4: Priority 222
    Thread 3: Priority 222
    Thread 2: Priority 222
    Thread 3: Priority 221
    Thread 4: Priority 221
    Thread 0: Priority 221
    Thread 1: Priority 221
    Thread 2: Priority 221
    Thread 4: Priority 220
    Thread 3: Priority 220
    Thread 0: Priority 220
    Thread 1: Priority 220
    Thread 2: Priority 220
    Thread 0: Priority 219
    Thread 1: Priority 219
    Thread 2: Priority 219
    Thread 3: Priority 219
    Thread 4: Priority 219
    Thread 0: Priority 218
    Thread 4: Priority 218
    Thread 2: Priority 218
    Thread 1: Priority 218
    Thread 3: Priority 218
    Thread 2: Priority 217
    Thread 1: Priority 217
    Thread 3: Priority 217
    Thread 4: Priority 217
    Thread 0: Priority 217
    Thread 0: Priority 216
    Thread 3: Priority 216
    Thread 4: Priority 216
    Thread 1: Priority 216
    Thread 2: Priority 216
    Thread 0: Priority 215
    Thread 3: Priority 215
    Thread 4: Priority 215
    Thread 1: Priority 215
    Thread 2: Priority 215
    Thread 1: Priority 214
    Thread 0: Priority 214
    Thread 4: Priority 214
    Thread 3: Priority 214
    Thread 2: Priority 214
    Thread 1: Priority 213
    Thread 3: Priority 213
    Thread 4: Priority 213
    Thread 2: Priority 213
    Thread 0: Priority 213
    Thread 3: Priority 212
    Thread 4: Priority 212
    Thread 0: Priority 212
    Thread 1: Priority 212
    Thread 2: Priority 212
    Thread 1: Priority 211
    Thread 2: Priority 211
    Thread 3: Priority 211
    Thread 0: Priority 211
    Thread 4: Priority 211
    Thread 0: Priority 210
    Thread 4: Priority 210
    Thread 1: Priority 210
    Thread 2: Priority 210
    Thread 3: Priority 210
    Thread 0: Priority 209
    Thread 3: Priority 209
    Thread 2: Priority 209
    Thread 4: Priority 209
    Thread 1: Priority 209
    Thread 1: Priority 208
    Thread 4: Priority 208
    Thread 0: Priority 208
    Thread 2: Priority 208
    Thread 3: Priority 208
    Thread 0: Priority 207
    Thread 4: Priority 207
    Thread 1: Priority 207
    Thread 2: Priority 207
    Thread 3: Priority 207
    Thread 2: Priority 206
    Thread 4: Priority 206
    Thread 1: Priority 206
    Thread 3: Priority 206
    Thread 0: Priority 206
    Thread 1: Priority 205
    Thread 3: Priority 205
    Thread 0: Priority 205
    Thread 4: Priority 205
    Thread 2: Priority 205
    Thread 3: Priority 204
    Thread 1: Priority 204
    Thread 4: Priority 204
    Thread 0: Priority 204
    Thread 2: Priority 204
    Thread 3: Priority 203
    Thread 4: Priority 203
    Thread 1: Priority 203
    Thread 2: Priority 203
    Thread 0: Priority 203
    Thread 3: Priority 202
    Thread 0: Priority 202
    Thread 4: Priority 202
    Thread 1: Priority 202
    Thread 2: Priority 202
    Thread 2: Priority 201
    Thread 3: Priority 201
    Thread 1: Priority 201
    Thread 0: Priority 201
    Thread 4: Priority 201
    Thread 4: Priority 200
    Thread 1: Priority 200
    Thread 3: Priority 200
    Thread 2: Priority 200
    Thread 0: Priority 200
    Thread 2: Priority 199
    Thread 0: Priority 199
    Thread 4: Priority 199
    Thread 1: Priority 199
    Thread 3: Priority 199
    Thread 3: Priority 198
    Thread 1: Priority 198
    Thread 4: Priority 198
    Thread 0: Priority 198
    Thread 2: Priority 198
    Thread 4: Priority 197
    Thread 2: Priority 197
    Thread 0: Priority 197
    Thread 3: Priority 197
    Thread 1: Priority 197
    Thread 1: Priority 196
    Thread 3: Priority 196
    Thread 4: Priority 196
    Thread 0: Priority 196
    Thread 2: Priority 196
    Thread 4: Priority 195
    Thread 0: Priority 195
    Thread 1: Priority 195
    Thread 3: Priority 195
    Thread 2: Priority 195
    Thread 0: Priority 194
    Thread 4: Priority 194
    Thread 2: Priority 194
    Thread 3: Priority 194
    Thread 1: Priority 194
    Thread 2: Priority 193
    Thread 1: Priority 193
    Thread 0: Priority 193
    Thread 3: Priority 193
    Thread 4: Priority 193
    Thread 0: Priority 192
    Thread 1: Priority 192
    Thread 4: Priority 192
    Thread 2: Priority 192
    Thread 3: Priority 192
    Thread 2: Priority 191
    Thread 1: Priority 191
    Thread 4: Priority 191
    Thread 0: Priority 191
    Thread 3: Priority 191
    Thread 1: Priority 190
    Thread 3: Priority 190
    Thread 0: Priority 190
    Thread 4: Priority 190
    Thread 2: Priority 190
    Thread 1: Priority 189
    Thread 0: Priority 189
    Thread 2: Priority 189
    Thread 3: Priority 189
    Thread 4: Priority 189
    Thread 3: Priority 188
    Thread 1: Priority 188
    Thread 2: Priority 188
    Thread 4: Priority 188
    Thread 0: Priority 188
    Thread 2: Priority 187
    Thread 3: Priority 187
    Thread 4: Priority 187
    Thread 1: Priority 187
    Thread 0: Priority 187
    Thread 3: Priority 186
    Thread 4: Priority 186
    Thread 2: Priority 186
    Thread 1: Priority 186
    Thread 0: Priority 186
    Thread 3: Priority 185
    Thread 0: Priority 185
    Thread 4: Priority 185
    Thread 1: Priority 185
    Thread 2: Priority 185
    Thread 4: Priority 184
    Thread 0: Priority 184
    Thread 1: Priority 184
    Thread 3: Priority 184
    Thread 2: Priority 184
    Thread 0: Priority 183
    Thread 3: Priority 183
    Thread 2: Priority 183
    Thread 1: Priority 183
    Thread 4: Priority 183
    Thread 0: Priority 182
    Thread 2: Priority 182
    Thread 3: Priority 182
    Thread 4: Priority 182
    Thread 1: Priority 182
    Thread 3: Priority 181
    Thread 1: Priority 181
    Thread 0: Priority 181
    Thread 4: Priority 181
    Thread 2: Priority 181
    Thread 2: Priority 180
    Thread 3: Priority 180
    Thread 1: Priority 180
    Thread 4: Priority 180
    Thread 0: Priority 180
    Thread 1: Priority 179
    Thread 3: Priority 179
    Thread 4: Priority 179
    Thread 2: Priority 179
    Thread 0: Priority 179
    Thread 4: Priority 178
    Thread 0: Priority 178
    Thread 3: Priority 178
    Thread 1: Priority 178
    Thread 2: Priority 178
    Thread 3: Priority 177
    Thread 0: Priority 177
    Thread 4: Priority 177
    Thread 1: Priority 177
    Thread 2: Priority 177
    Thread 3: Priority 176
    Thread 2: Priority 176
    Thread 0: Priority 176
    Thread 1: Priority 176
    Thread 4: Priority 176
    Thread 4: Priority 175
    Thread 0: Priority 175
    Thread 2: Priority 175
    Thread 1: Priority 175
    Thread 3: Priority 175
    Thread 3: Priority 174
    Thread 1: Priority 174
    Thread 0: Priority 174
    Thread 4: Priority 174
    Thread 2: Priority 174
    Thread 2: Priority 173
    Thread 3: Priority 173
    Thread 1: Priority 173
    Thread 4: Priority 173
    Thread 0: Priority 173
    Thread 2: Priority 172
    Thread 4: Priority 172
    Thread 3: Priority 172
    Thread 1: Priority 172
    Thread 0: Priority 172
    Thread 0: Priority 171
    Thread 1: Priority 171
    Thread 3: Priority 171
    Thread 2: Priority 171
    Thread 4: Priority 171
    Thread 0: Priority 170
    Thread 1: Priority 170
    Thread 2: Priority 170
    Thread 4: Priority 170
    Thread 3: Priority 170
    Thread 4: Priority 169
    Thread 0: Priority 169
    Thread 2: Priority 169
    Thread 3: Priority 169
    Thread 1: Priority 169
    Thread 1: Priority 168
    Thread 4: Priority 168
    Thread 3: Priority 168
    Thread 0: Priority 168
    Thread 2: Priority 168
    Thread 3: Priority 167
    Thread 4: Priority 167
    Thread 0: Priority 167
    Thread 2: Priority 167
    Thread 1: Priority 167
    Thread 0: Priority 166
    Thread 2: Priority 166
    Thread 1: Priority 166
    Thread 3: Priority 166
    Thread 4: Priority 166
    Thread 0: Priority 165
    Thread 4: Priority 165
    Thread 3: Priority 165
    Thread 2: Priority 165
    Thread 1: Priority 165
    Thread 4: Priority 164
    Thread 0: Priority 164
    Thread 1: Priority 164
    Thread 2: Priority 164
    Thread 3: Priority 164
    Thread 0: Priority 163
    Thread 1: Priority 163
    Thread 3: Priority 163
    Thread 4: Priority 163
    Thread 2: Priority 163
    Thread 3: Priority 162
    Thread 2: Priority 162
    Thread 0: Priority 162
    Thread 4: Priority 162
    Thread 1: Priority 162
    Thread 3: Priority 161
    Thread 4: Priority 161
    Thread 2: Priority 161
    Thread 1: Priority 161
    Thread 0: Priority 161
    Thread 3: Priority 160
    Thread 1: Priority 160
    Thread 0: Priority 160
    Thread 2: Priority 160
    Thread 4: Priority 160
    Thread 3: Priority 159
    Thread 4: Priority 159
    Thread 0: Priority 159
    Thread 1: Priority 159
    Thread 2: Priority 159
    Thread 4: Priority 158
    Thread 1: Priority 158
    Thread 2: Priority 158
    Thread 0: Priority 158
    Thread 3: Priority 158
    Thread 3: Priority 157
    Thread 0: Priority 157
    Thread 2: Priority 157
    Thread 1: Priority 157
    Thread 4: Priority 157
    Thread 1: Priority 156
    Thread 0: Priority 156
    Thread 3: Priority 156
    Thread 2: Priority 156
    Thread 4: Priority 156
    Thread 0: Priority 155
    Thread 3: Priority 155
    Thread 4: Priority 155
    Thread 1: Priority 155
    Thread 2: Priority 155
    Thread 2: Priority 154
    Thread 3: Priority 154
    Thread 4: Priority 154
    Thread 1: Priority 154
    Thread 0: Priority 154
    Thread 0: Priority 153
    Thread 3: Priority 153
    Thread 4: Priority 153
    Thread 1: Priority 153
    Thread 2: Priority 153
    Thread 1: Priority 152
    Thread 3: Priority 152
    Thread 4: Priority 152
    Thread 2: Priority 152
    Thread 0: Priority 152
    Thread 3: Priority 151
    Thread 2: Priority 151
    Thread 0: Priority 151
    Thread 1: Priority 151
    Thread 4: Priority 151
    Thread 3: Priority 150
    Thread 0: Priority 150
    Thread 2: Priority 150
    Thread 1: Priority 150
    Thread 4: Priority 150
    Thread 3: Priority 149
    Thread 2: Priority 149
    Thread 4: Priority 149
    Thread 1: Priority 149
    Thread 0: Priority 149
    Thread 2: Priority 148
    Thread 1: Priority 148
    Thread 4: Priority 148
    Thread 0: Priority 148
    Thread 3: Priority 148
    Thread 3: Priority 147
    Thread 1: Priority 147
    Thread 4: Priority 147
    Thread 0: Priority 147
    Thread 2: Priority 147
    Thread 0: Priority 146
    Thread 4: Priority 146
    Thread 3: Priority 146
    Thread 1: Priority 146
    Thread 2: Priority 146
    Thread 0: Priority 145
    Thread 4: Priority 145
    Thread 1: Priority 145
    Thread 3: Priority 145
    Thread 2: Priority 145
    Thread 4: Priority 144
    Thread 0: Priority 144
    Thread 1: Priority 144
    Thread 2: Priority 144
    Thread 3: Priority 144
    Thread 3: Priority 143
    Thread 4: Priority 143
    Thread 2: Priority 143
    Thread 0: Priority 143
    Thread 1: Priority 143
    Thread 1: Priority 142
    Thread 3: Priority 142
    Thread 2: Priority 142
    Thread 0: Priority 142
    Thread 4: Priority 142
    Thread 3: Priority 141
    Thread 0: Priority 141
    Thread 1: Priority 141
    Thread 2: Priority 141
    Thread 4: Priority 141
    Thread 2: Priority 140
    Thread 4: Priority 140
    Thread 3: Priority 140
    Thread 0: Priority 140
    Thread 1: Priority 140
    Thread 4: Priority 139
    Thread 1: Priority 139
    Thread 2: Priority 139
    Thread 3: Priority 139
    Thread 0: Priority 139
    Thread 0: Priority 138
    Thread 1: Priority 138
    Thread 2: Priority 138
    Thread 3: Priority 138
    Thread 4: Priority 138
    Thread 1: Priority 137
    Thread 4: Priority 137
    Thread 0: Priority 137
    Thread 2: Priority 137
    Thread 3: Priority 137
    Thread 3: Priority 136
    Thread 2: Priority 136
    Thread 4: Priority 136
    Thread 1: Priority 136
    Thread 0: Priority 136
    Thread 2: Priority 135
    Thread 0: Priority 135
    Thread 3: Priority 135
    Thread 4: Priority 135
    Thread 1: Priority 135
    Thread 2: Priority 134
    Thread 0: Priority 134
    Thread 4: Priority 134
    Thread 3: Priority 134
    Thread 1: Priority 134
    Thread 4: Priority 133
    Thread 3: Priority 133
    Thread 1: Priority 133
    Thread 2: Priority 133
    Thread 0: Priority 133
    Thread 1: Priority 132
    Thread 2: Priority 132
    Thread 0: Priority 132
    Thread 4: Priority 132
    Thread 3: Priority 132
    Thread 2: Priority 131
    Thread 1: Priority 131
    Thread 4: Priority 131
    Thread 0: Priority 131
    Thread 3: Priority 131
    Thread 3: Priority 130
    Thread 0: Priority 130
    Thread 4: Priority 130
    Thread 2: Priority 130
    Thread 1: Priority 130
    Thread 1: Priority 129
    Thread 4: Priority 129
    Thread 0: Priority 129
    Thread 2: Priority 129
    Thread 3: Priority 129
    Thread 2: Priority 128
    Thread 3: Priority 128
    Thread 0: Priority 128
    Thread 4: Priority 128
    Thread 1: Priority 128
    Thread 2: Priority 127
    Thread 4: Priority 127
    Thread 0: Priority 127
    Thread 1: Priority 127
    Thread 3: Priority 127
    Thread 0: Priority 126
    Thread 4: Priority 126
    Thread 3: Priority 126
    Thread 2: Priority 126
    Thread 1: Priority 126
    Thread 3: Priority 125
    Thread 4: Priority 125
    Thread 1: Priority 125
    Thread 2: Priority 125
    Thread 0: Priority 125
    Thread 4: Priority 124
    Thread 2: Priority 124
    Thread 0: Priority 124
    Thread 3: Priority 124
    Thread 1: Priority 124
    Thread 4: Priority 123
    Thread 0: Priority 123
    Thread 2: Priority 123
    Thread 3: Priority 123
    Thread 1: Priority 123
    Thread 3: Priority 122
    Thread 4: Priority 122
    Thread 1: Priority 122
    Thread 2: Priority 122
    Thread 0: Priority 122
    Thread 1: Priority 121
    Thread 0: Priority 121
    Thread 3: Priority 121
    Thread 2: Priority 121
    Thread 4: Priority 121
    Thread 2: Priority 120
    Thread 4: Priority 120
    Thread 3: Priority 120
    Thread 1: Priority 120
    Thread 0: Priority 120
    Thread 1: Priority 119
    Thread 3: Priority 119
    Thread 0: Priority 119
    Thread 2: Priority 119
    Thread 4: Priority 119
    Thread 1: Priority 118
    Thread 2: Priority 118
    Thread 4: Priority 118
    Thread 3: Priority 118
    Thread 0: Priority 118
    Thread 2: Priority 117
    Thread 0: Priority 117
    Thread 3: Priority 117
    Thread 4: Priority 117
    Thread 1: Priority 117
    Thread 3: Priority 116
    Thread 1: Priority 116
    Thread 4: Priority 116
    Thread 0: Priority 116
    Thread 2: Priority 116
    Thread 1: Priority 115
    Thread 4: Priority 115
    Thread 3: Priority 115
    Thread 2: Priority 115
    Thread 0: Priority 115
    Thread 4: Priority 114
    Thread 3: Priority 114
    Thread 0: Priority 114
    Thread 2: Priority 114
    Thread 1: Priority 114
    Thread 4: Priority 113
    Thread 0: Priority 113
    Thread 2: Priority 113
    Thread 1: Priority 113
    Thread 3: Priority 113
    Thread 0: Priority 112
    Thread 1: Priority 112
    Thread 2: Priority 112
    Thread 4: Priority 112
    Thread 3: Priority 112
    Thread 0: Priority 111
    Thread 2: Priority 111
    Thread 4: Priority 111
    Thread 1: Priority 111
    Thread 3: Priority 111
    Thread 1: Priority 110
    Thread 3: Priority 110
    Thread 2: Priority 110
    Thread 4: Priority 110
    Thread 0: Priority 110
    Thread 3: Priority 109
    Thread 1: Priority 109
    Thread 0: Priority 109
    Thread 4: Priority 109
    Thread 2: Priority 109
    Thread 1: Priority 108
    Thread 0: Priority 108
    Thread 4: Priority 108
    Thread 3: Priority 108
    Thread 2: Priority 108
    Thread 3: Priority 107
    Thread 2: Priority 107
    Thread 0: Priority 107
    Thread 4: Priority 107
    Thread 1: Priority 107
    Thread 1: Priority 106
    Thread 2: Priority 106
    Thread 4: Priority 106
    Thread 3: Priority 106
    Thread 0: Priority 106
    Thread 4: Priority 105
    Thread 3: Priority 105
    Thread 2: Priority 105
    Thread 0: Priority 105
    Thread 1: Priority 105
    Thread 1: Priority 104
    Thread 2: Priority 104
    Thread 0: Priority 104
    Thread 3: Priority 104
    Thread 4: Priority 104
    Thread 1: Priority 103
    Thread 3: Priority 103
    Thread 0: Priority 103
    Thread 4: Priority 103
    Thread 2: Priority 103
    Thread 1: Priority 102
    Thread 3: Priority 102
    Thread 0: Priority 102
    Thread 4: Priority 102
    Thread 2: Priority 102
    Thread 4: Priority 101
    Thread 0: Priority 101
    Thread 3: Priority 101
    Thread 2: Priority 101
    Thread 1: Priority 101
    Thread 3: Priority 100
    Thread 2: Priority 100
    Thread 4: Priority 100
    Thread 1: Priority 100
    Thread 0: Priority 100
    Thread 1: Priority 99
    Thread 2: Priority 99
    Thread 3: Priority 99
    Thread 0: Priority 99
    Thread 4: Priority 99
    Thread 2: Priority 98
    Thread 0: Priority 98
    Thread 3: Priority 98
    Thread 1: Priority 98
    Thread 4: Priority 98
    Thread 3: Priority 97
    Thread 1: Priority 97
    Thread 4: Priority 97
    Thread 2: Priority 97
    Thread 0: Priority 97
    Thread 2: Priority 96
    Thread 0: Priority 96
    Thread 1: Priority 96
    Thread 3: Priority 96
    Thread 4: Priority 96
    Thread 2: Priority 95
    Thread 4: Priority 95
    Thread 3: Priority 95
    Thread 1: Priority 95
    Thread 0: Priority 95
    Thread 1: Priority 94
    Thread 2: Priority 94
    Thread 3: Priority 94
    Thread 4: Priority 94
    Thread 0: Priority 94
    Thread 1: Priority 93
    Thread 3: Priority 93
    Thread 4: Priority 93
    Thread 0: Priority 93
    Thread 2: Priority 93
    Thread 0: Priority 92
    Thread 4: Priority 92
    Thread 3: Priority 92
    Thread 1: Priority 92
    Thread 2: Priority 92
    Thread 3: Priority 91
    Thread 2: Priority 91
    Thread 1: Priority 91
    Thread 0: Priority 91
    Thread 4: Priority 91
    Thread 4: Priority 90
    Thread 1: Priority 90
    Thread 3: Priority 90
    Thread 2: Priority 90
    Thread 0: Priority 90
    Thread 2: Priority 89
    Thread 3: Priority 89
    Thread 4: Priority 89
    Thread 1: Priority 89
    Thread 0: Priority 89
    Thread 2: Priority 88
    Thread 1: Priority 88
    Thread 0: Priority 88
    Thread 3: Priority 88
    Thread 4: Priority 88
    Thread 2: Priority 87
    Thread 1: Priority 87
    Thread 4: Priority 87
    Thread 3: Priority 87
    Thread 0: Priority 87
    Thread 4: Priority 86
    Thread 0: Priority 86
    Thread 2: Priority 86
    Thread 1: Priority 86
    Thread 3: Priority 86
    Thread 4: Priority 85
    Thread 1: Priority 85
    Thread 2: Priority 85
    Thread 0: Priority 85
    Thread 3: Priority 85
    Thread 4: Priority 84
    Thread 3: Priority 84
    Thread 0: Priority 84
    Thread 2: Priority 84
    Thread 1: Priority 84
    Thread 4: Priority 83
    Thread 1: Priority 83
    Thread 2: Priority 83
    Thread 0: Priority 83
    Thread 3: Priority 83
    Thread 1: Priority 82
    Thread 4: Priority 82
    Thread 3: Priority 82
    Thread 0: Priority 82
    Thread 2: Priority 82
    Thread 4: Priority 81
    Thread 2: Priority 81
    Thread 3: Priority 81
    Thread 1: Priority 81
    Thread 0: Priority 81
    Thread 2: Priority 80
    Thread 3: Priority 80
    Thread 4: Priority 80
    Thread 1: Priority 80
    Thread 0: Priority 80
    Thread 4: Priority 79
    Thread 0: Priority 79
    Thread 3: Priority 79
    Thread 2: Priority 79
    Thread 1: Priority 79
    Thread 0: Priority 78
    Thread 2: Priority 78
    Thread 1: Priority 78
    Thread 3: Priority 78
    Thread 4: Priority 78
    Thread 3: Priority 77
    Thread 0: Priority 77
    Thread 4: Priority 77
    Thread 2: Priority 77
    Thread 1: Priority 77
    Thread 3: Priority 76
    Thread 1: Priority 76
    Thread 0: Priority 76
    Thread 4: Priority 76
    Thread 2: Priority 76
    Thread 0: Priority 75
    Thread 2: Priority 75
    Thread 3: Priority 75
    Thread 4: Priority 75
    Thread 1: Priority 75
    Thread 0: Priority 74
    Thread 4: Priority 74
    Thread 2: Priority 74
    Thread 1: Priority 74
    Thread 3: Priority 74
    Thread 3: Priority 73
    Thread 1: Priority 73
    Thread 2: Priority 73
    Thread 4: Priority 73
    Thread 0: Priority 73
    Thread 1: Priority 72
    Thread 2: Priority 72
    Thread 3: Priority 72
    Thread 4: Priority 72
    Thread 0: Priority 72
    Thread 3: Priority 71
    Thread 4: Priority 71
    Thread 0: Priority 71
    Thread 1: Priority 71
    Thread 2: Priority 71
    Thread 0: Priority 70
    Thread 3: Priority 70
    Thread 2: Priority 70
    Thread 1: Priority 70
    Thread 4: Priority 70
    Thread 4: Priority 69
    Thread 2: Priority 69
    Thread 1: Priority 69
    Thread 0: Priority 69
    Thread 3: Priority 69
    Thread 3: Priority 68
    Thread 0: Priority 68
    Thread 2: Priority 68
    Thread 1: Priority 68
    Thread 4: Priority 68
    Thread 3: Priority 67
    Thread 4: Priority 67
    Thread 1: Priority 67
    Thread 0: Priority 67
    Thread 2: Priority 67
    Thread 4: Priority 66
    Thread 3: Priority 66
    Thread 1: Priority 66
    Thread 0: Priority 66
    Thread 2: Priority 66
    Thread 3: Priority 65
    Thread 1: Priority 65
    Thread 2: Priority 65
    Thread 0: Priority 65
    Thread 4: Priority 65
    Thread 2: Priority 64
    Thread 1: Priority 64
    Thread 0: Priority 64
    Thread 4: Priority 64
    Thread 3: Priority 64
    Thread 4: Priority 63
    Thread 3: Priority 63
    Thread 2: Priority 63
    Thread 1: Priority 63
    Thread 0: Priority 63
    Thread 3: Priority 62
    Thread 1: Priority 62
    Thread 2: Priority 62
    Thread 0: Priority 62
    Thread 4: Priority 62
    Thread 1: Priority 61
    Thread 4: Priority 61
    Thread 0: Priority 61
    Thread 3: Priority 61
    Thread 2: Priority 61
    Thread 1: Priority 60
    Thread 3: Priority 60
    Thread 2: Priority 60
    Thread 4: Priority 60
    Thread 0: Priority 60
    Thread 2: Priority 59
    Thread 3: Priority 59
    Thread 1: Priority 59
    Thread 4: Priority 59
    Thread 0: Priority 59
    Thread 0: Priority 58
    Thread 1: Priority 58
    Thread 3: Priority 58
    Thread 2: Priority 58
    Thread 4: Priority 58
    Thread 3: Priority 57
    Thread 4: Priority 57
    Thread 1: Priority 57
    Thread 2: Priority 57
    Thread 0: Priority 57
    Thread 2: Priority 56
    Thread 0: Priority 56
    Thread 1: Priority 56
    Thread 3: Priority 56
    Thread 4: Priority 56
    Thread 4: Priority 55
    Thread 1: Priority 55
    Thread 3: Priority 55
    Thread 0: Priority 55
    Thread 2: Priority 55
    Thread 0: Priority 54
    Thread 3: Priority 54
    Thread 2: Priority 54
    Thread 4: Priority 54
    Thread 1: Priority 54
    Thread 2: Priority 53
    Thread 1: Priority 53
    Thread 0: Priority 53
    Thread 4: Priority 53
    Thread 3: Priority 53
    Thread 3: Priority 52
    Thread 2: Priority 52
    Thread 4: Priority 52
    Thread 1: Priority 52
    Thread 0: Priority 52
    Thread 2: Priority 51
    Thread 3: Priority 51
    Thread 0: Priority 51
    Thread 1: Priority 51
    Thread 4: Priority 51
    Thread 3: Priority 50
    Thread 0: Priority 50
    Thread 4: Priority 50
    Thread 2: Priority 50
    Thread 1: Priority 50
    Thread 1: Priority 49
    Thread 2: Priority 49
    Thread 3: Priority 49
    Thread 0: Priority 49
    Thread 4: Priority 49
    Thread 1: Priority 48
    Thread 0: Priority 48
    Thread 4: Priority 48
    Thread 2: Priority 48
    Thread 3: Priority 48
    Thread 4: Priority 47
    Thread 2: Priority 47
    Thread 0: Priority 47
    Thread 3: Priority 47
    Thread 1: Priority 47
    Thread 2: Priority 46
    Thread 0: Priority 46
    Thread 4: Priority 46
    Thread 1: Priority 46
    Thread 3: Priority 46
    Thread 3: Priority 45
    Thread 2: Priority 45
    Thread 4: Priority 45
    Thread 0: Priority 45
    Thread 1: Priority 45
    Thread 4: Priority 44
    Thread 1: Priority 44
    Thread 0: Priority 44
    Thread 3: Priority 44
    Thread 2: Priority 44
    Thread 2: Priority 43
    Thread 0: Priority 43
    Thread 4: Priority 43
    Thread 3: Priority 43
    Thread 1: Priority 43
    Thread 0: Priority 42
    Thread 2: Priority 42
    Thread 4: Priority 42
    Thread 3: Priority 42
    Thread 1: Priority 42
    Thread 0: Priority 41
    Thread 4: Priority 41
    Thread 3: Priority 41
    Thread 2: Priority 41
    Thread 1: Priority 41
    Thread 2: Priority 40
    Thread 3: Priority 40
    Thread 1: Priority 40
    Thread 4: Priority 40
    Thread 0: Priority 40
    Thread 4: Priority 39
    Thread 0: Priority 39
    Thread 2: Priority 39
    Thread 1: Priority 39
    Thread 3: Priority 39
    Thread 4: Priority 38
    Thread 0: Priority 38
    Thread 2: Priority 38
    Thread 1: Priority 38
    Thread 3: Priority 38
    Thread 0: Priority 37
    Thread 3: Priority 37
    Thread 4: Priority 37
    Thread 1: Priority 37
    Thread 2: Priority 37
    Thread 2: Priority 36
    Thread 1: Priority 36
    Thread 0: Priority 36
    Thread 3: Priority 36
    Thread 4: Priority 36
    Thread 4: Priority 35
    Thread 1: Priority 35
    Thread 0: Priority 35
    Thread 2: Priority 35
    Thread 3: Priority 35
    Thread 4: Priority 34
    Thread 0: Priority 34
    Thread 2: Priority 34
    Thread 3: Priority 34
    Thread 1: Priority 34
    Thread 0: Priority 33
    Thread 4: Priority 33
    Thread 3: Priority 33
    Thread 2: Priority 33
    Thread 1: Priority 33
    Thread 1: Priority 32
    Thread 4: Priority 32
    Thread 0: Priority 32
    Thread 2: Priority 32
    Thread 3: Priority 32
    Thread 4: Priority 31
    Thread 1: Priority 31
    Thread 0: Priority 31
    Thread 2: Priority 31
    Thread 3: Priority 31
    Thread 1: Priority 30
    Thread 4: Priority 30
    Thread 3: Priority 30
    Thread 0: Priority 30
    Thread 2: Priority 30
    Thread 4: Priority 29
    Thread 3: Priority 29
    Thread 0: Priority 29
    Thread 1: Priority 29
    Thread 2: Priority 29
    Thread 4: Priority 28
    Thread 0: Priority 28
    Thread 1: Priority 28
    Thread 2: Priority 28
    Thread 3: Priority 28
    Thread 0: Priority 27
    Thread 2: Priority 27
    Thread 3: Priority 27
    Thread 1: Priority 27
    Thread 4: Priority 27
    Thread 4: Priority 26
    Thread 1: Priority 26
    Thread 2: Priority 26
    Thread 3: Priority 26
    Thread 0: Priority 26
    Thread 3: Priority 25
    Thread 4: Priority 25
    Thread 0: Priority 25
    Thread 1: Priority 25
    Thread 2: Priority 25
    Thread 0: Priority 24
    Thread 4: Priority 24
    Thread 3: Priority 24
    Thread 2: Priority 24
    Thread 1: Priority 24
    Thread 2: Priority 23
    Thread 1: Priority 23
    Thread 4: Priority 23
    Thread 3: Priority 23
    Thread 0: Priority 23
    Thread 3: Priority 22
    Thread 4: Priority 22
    Thread 2: Priority 22
    Thread 0: Priority 22
    Thread 1: Priority 22
    Thread 2: Priority 21
    Thread 0: Priority 21
    Thread 4: Priority 21
    Thread 3: Priority 21
    Thread 1: Priority 21
    Thread 4: Priority 20
    Thread 0: Priority 20
    Thread 3: Priority 20
    Thread 2: Priority 20
    Thread 1: Priority 20
    Thread 0: Priority 19
    Thread 1: Priority 19
    Thread 4: Priority 19
    Thread 2: Priority 19
    Thread 3: Priority 19
    Thread 0: Priority 18
    Thread 4: Priority 18
    Thread 2: Priority 18
    Thread 1: Priority 18
    Thread 3: Priority 18
    Thread 3: Priority 17
    Thread 2: Priority 17
    Thread 4: Priority 17
    Thread 1: Priority 17
    Thread 0: Priority 17
    Thread 2: Priority 16
    Thread 4: Priority 16
    Thread 0: Priority 16
    Thread 3: Priority 16
    Thread 1: Priority 16
    Thread 3: Priority 15
    Thread 2: Priority 15
    Thread 1: Priority 15
    Thread 4: Priority 15
    Thread 0: Priority 15
    Thread 1: Priority 14
    Thread 2: Priority 14
    Thread 4: Priority 14
    Thread 0: Priority 14
    Thread 3: Priority 14
    Thread 2: Priority 13
    Thread 1: Priority 13
    Thread 3: Priority 13
    Thread 4: Priority 13
    Thread 0: Priority 13
    Thread 0: Priority 12
    Thread 2: Priority 12
    Thread 3: Priority 12
    Thread 4: Priority 12
    Thread 1: Priority 12
    Thread 3: Priority 11
    Thread 0: Priority 11
    Thread 1: Priority 11
    Thread 2: Priority 11
    Thread 4: Priority 11
    Thread 1: Priority 10
    Thread 0: Priority 10
    Thread 4: Priority 10
    Thread 3: Priority 10
    Thread 2: Priority 10
    Thread 0: Priority 9
    Thread 3: Priority 9
    Thread 1: Priority 9
    Thread 2: Priority 9
    Thread 4: Priority 9
    Thread 3: Priority 8
    Thread 4: Priority 8
    Thread 1: Priority 8
    Thread 2: Priority 8
    Thread 0: Priority 8
    Thread 0: Priority 7
    Thread 3: Priority 7
    Thread 4: Priority 7
    Thread 1: Priority 7
    Thread 2: Priority 7
    Thread 2: Priority 6
    Thread 3: Priority 6
    Thread 4: Priority 6
    Thread 0: Priority 6
    Thread 1: Priority 6
    Thread 1: Priority 5
    Thread 0: Priority 5
    Thread 4: Priority 5
    Thread 3: Priority 5
    Thread 2: Priority 5
    Thread 4: Priority 4
    Thread 2: Priority 4
    Thread 3: Priority 4
    Thread 0: Priority 4
    Thread 1: Priority 4
    Thread 1: Priority 3
    Thread 4: Priority 3
    Thread 0: Priority 3
    Thread 2: Priority 3
    Thread 3: Priority 3
    Thread 3: Priority 2
    Thread 4: Priority 2
    Thread 1: Priority 2
    Thread 2: Priority 2
    Thread 0: Priority 2
    Thread 3: Priority 1
    Thread 1: Priority 1
    Thread 4: Priority 1
    Thread 0: Priority 1
    Thread 2: Priority 1
    Thread 1: Priority 0
    Thread 0: Priority 0
    Thread 3: Priority 0
    Thread 4: Priority 0
    Thread 2: Priority 0
    Main: Queue Size: 0
    Main: End of the program.
    View Code

     4. 使用带有延迟元素的线程安全列表

      Java API提供了一种用于并发应用的有趣的数据结构,即DelayQueue类。这个类可以存放带有激活日期的元素。当调用方法从队列中返回或提取元素时,未来的元素日期将被忽略。这些元素对于这些方法是不可见的。

      为了具有调用行为,存放到DelayQueue类中的元素必须继承Delayed接口。Dealyed接口使对象成为延迟对象,它使存放在DealayQueue类中的对象具有了激活的日期,即到激活日期的时间。该接口强制执行下列两个方法。

    • compareTo(Delayed o):Delayed接口继承了Comparable接口,因此有了这个方法。如果当前对象的延迟值小于参数对象的值,将返回一个小于0的值;如果当前对象的延迟值大于参数对象的延迟值,将返回一个大于0的值;如果两者的延迟值相等则返回0。
    • getDelay(TimeUnit unit):这个方法返回到激活日期的剩余时间,单位由单位参数指定。

      本例中,将会学习使用DelayQueue类来存放具有不同激活日期的event。

    1. 创建名为Event的类并实现Delayed接口。

    import java.util.Date;
    import java.util.concurrent.Delayed;
    import java.util.concurrent.TimeUnit;
    
    public class Event implements Delayed{
        private Date startDate;
        
        public Event(Date startDate){
            this.startDate = startDate;
        }
        
        @Override
        public int compareTo(Delayed o) {
            long result = this.getDelay(TimeUnit.NANOSECONDS)-o.getDelay(TimeUnit.NANOSECONDS);
            if(result<0)
                return -1;
            if(result>0)
                return 1;
            return 0;
        }
    
        @Override
        public long getDelay(TimeUnit unit) {
            Date now = new Date();
            long diff = startDate.getTime()-now.getTime();
            return unit.convert(diff, TimeUnit.MILLISECONDS);
        }
        
        
    }

    2. 创建名为Task的类,并实现Runnable接口。

    import java.util.Date;
    import java.util.concurrent.DelayQueue;
    
    
    public class Task implements Runnable {
        private int id;
        private DelayQueue<Event> queue;
        
        public Task(int id, DelayQueue<Event> queue){
            this.id = id;
            this.queue = queue;
        }
        
        @Override
        public void run() {
            Date now = new Date();
            Date delay = new Date();
            delay.setTime(now.getTime()+id*1000);
            System.out.printf("Thread %s: %s
    ", id, delay);
            for(int i=0;i<100;i++){
                Event event = new Event(delay);
                queue.add(event);
            }
        }    
        
    }

    3. 创建范例的主类Main,并添加main()方法。

    import java.util.Date;
    import java.util.concurrent.DelayQueue;
    import java.util.concurrent.TimeUnit;
    
    public class Main {
    
        public static void main(String[] args) {
            DelayQueue<Event> queue = new DelayQueue<>();
            Thread threads[] = new Thread[5];
            for(int i=0;i<threads.length;i++){
                Task task = new Task(i+1, queue);
                threads[i] = new Thread(task);
            }
            for(int i=0;i<threads.length;i++){
                threads[i].start();
            }
            try {
                for(int i=0;i<threads.length;i++){
                    threads[i].join();
                }
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            try {
                while(queue.size()>0){
                    int counter = 0;
                    Event event;
                    do{
                        event = queue.poll();
                        if(event!=null)
                            counter++;
                    }while(event!=null);
                    System.out.printf("At %s you have read %d events
    ", new Date(),counter);
                    Thread.sleep(500);
                }
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            System.out.println("Main: End.");
        }
    }

    4. 程序运行结果如下

    Thread 5: Tue Oct 27 16:19:35 CST 2015
    Thread 4: Tue Oct 27 16:19:34 CST 2015
    Thread 2: Tue Oct 27 16:19:32 CST 2015
    Thread 1: Tue Oct 27 16:19:31 CST 2015
    Thread 3: Tue Oct 27 16:19:33 CST 2015
    At Tue Oct 27 16:19:30 CST 2015 you have read 0 events
    At Tue Oct 27 16:19:31 CST 2015 you have read 0 events
    At Tue Oct 27 16:19:31 CST 2015 you have read 100 events
    At Tue Oct 27 16:19:32 CST 2015 you have read 0 events
    At Tue Oct 27 16:19:32 CST 2015 you have read 100 events
    At Tue Oct 27 16:19:33 CST 2015 you have read 0 events
    At Tue Oct 27 16:19:33 CST 2015 you have read 100 events
    At Tue Oct 27 16:19:34 CST 2015 you have read 0 events
    At Tue Oct 27 16:19:34 CST 2015 you have read 100 events
    At Tue Oct 27 16:19:35 CST 2015 you have read 0 events
    At Tue Oct 27 16:19:35 CST 2015 you have read 100 events
    Main: End.
    View Code

      DelayQueue类本身是使用纳秒工作的,但是对于使用者来说,是透明的。

      注:使用size()方法必须小心,它返回的是列表中元素的总数,包括活动和非活动的元素。

    5. 使用线程安全可遍历映射

      Java API提供了一种用于并发应用的有趣的数据结构,即ConcurrentNavigableMap接口及其实现类。实现这个接口的类以如下两个部分存放元素:

    • 一个键值(Key),它是元素的标识并且是唯一的。
    • 元素其它部分数据。

      每一个组成部分都必须在不同的类中实现。

      Java API也提供了一个实现ConcurrentSkipListMap接口的类,ConcurrentSkipListMap接口实现了与ConcurrentNavigableMap接口有相同行为的一个非阻塞式列表。从内部实现机制来讲,它使用了一个Skip List来存放数据。Skip List是基于并发列表的数据结构,效率与二叉树相近。有了它,就有了一个数据结构,比如有序列表在添加、搜索或删除元素时耗费更少的访问时间。

      备注:Skip List由William Pugh在1990年引入,详见http://www.cs.umd.edu/~pugh/

      当你插入元素到映射中时,ConcurrentSkipListMap接口类使用键值来排序所有元素。除了提供返回一个具体元素的方法之外,这个类也提供获取子映射的方法。

      本节将要学习如何使用ConcurrentSkipListMap类实现对联系人对象的映射。

    1. 创建名为Contact的类。

    public class Contact {
        private String name;
        private String phone;
        
        public Contact(String name, String phone){
            this.name = name;
            this.phone = phone;
        }
    
        public String getName() {
            return name;
        }
    
        public String getPhone() {
            return phone;
        }
        
        
    }

    2. 创建名为Task的类,并实现Runnable接口。

    import java.util.concurrent.ConcurrentSkipListMap;
    
    public class Task implements Runnable {
        private String id;
        private ConcurrentSkipListMap<String, Contact> map;
        
        public Task(String id, ConcurrentSkipListMap<String, Contact> map){
            this.id = id;
            this.map = map;
        }
        
        @Override
        public void run() {
            for(int i=0;i<1000;i++){
                Contact contact = new Contact(id, String.valueOf(i+1000));
                map.put(id+contact.getPhone(), contact);
            }
        }    
        
    }

    3. 实现范例的主类Main,并添加main()方法。

    import java.util.Map;
    import java.util.concurrent.ConcurrentNavigableMap;
    import java.util.concurrent.ConcurrentSkipListMap;
    
    public class Main {
    
        public static void main(String[] args) {
            ConcurrentSkipListMap<String, Contact> map = new ConcurrentSkipListMap<>();
            Thread threads[] = new Thread[26];
            int counter = 0;
            for(char i='A';i<='Z';i++){
                Task task = new Task(String.valueOf(i), map);
                threads[counter] = new Thread(task);
                threads[counter].start();
                counter++;
            }
            try {
                for(int i=0;i<26;i++){
                    threads[i].join();
                }
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            System.out.printf("Main: Size of the map: %d
    ", map.size());
            Map.Entry<String, Contact> element;
            Contact contact;
            //输出第一个实体
            element = map.firstEntry();
            contact = element.getValue();
            System.out.printf("Main: First Entry: %s: %s
    ", contact.getName(), contact.getPhone());
            //输出最后一个实体
            element = map.lastEntry();
            contact = element.getValue();
            System.out.printf("Main: Last Entry: %s: %s
    ", contact.getName(), contact.getPhone());
            //使用subMap()取得map的一个子映射,并输出到控制台。
            System.out.printf("Main: Submap from A1996 to B1002: 
    ");
            ConcurrentNavigableMap<String, Contact>  summap = map.subMap("A1996", "B1002");
            do{
                element = summap.pollFirstEntry();
                if(element!=null){
                    contact = element.getValue();
                    System.out.printf("%s: %s
    ", contact.getName(), contact.getPhone());
                }
            }while(element!=null);
        }
    }

    4. 程序运行结果如下

    Main: Size of the map: 26000
    Main: First Entry: A: 1000
    Main: Last Entry: Z: 1999
    Main: Submap from A1996 to B1002: 
    A: 1996
    A: 1997
    A: 1998
    A: 1999
    B: 1000
    B: 1001

    6. 生成并发随机数

      Java并发API提供了一个特殊的类用以在并发程序中生成伪随机数(Pseudo-Random Number),即Java 7新引入的ThreadLocalRandom类。它是线程本地变量。每个生成随机数的线程都有一个不同的生成器,但是都在同一类中被管理,对程序员来说是透明的。相比于使用共享的Random对象为所有线程生成随机数,这种机制具有更好的性能。

      下面我们将学习如何使用ThreadLocalRandom类在并发应用中生成随机数。

    1. 创建名为TaskLocalRandom的类并实现Runnable接口。

    import java.util.concurrent.ThreadLocalRandom;
    
    public class TaskLocalRandom implements Runnable {
        
        //实现类构造器,使用current()方法为当前线程初始化随机数生成器
        public TaskLocalRandom(){
            ThreadLocalRandom.current();
        }
        
        @Override
        public void run() {
            String name = Thread.currentThread().getName();
            for(int i=0;i<10;i++){
                System.out.printf("%s: %d
    ", name, ThreadLocalRandom.current().nextInt(10));
            }        
        }
    }

    2. 创建本范例的主类Main,并实现main()方法。

    public class Main {
    
        public static void main(String[] args) {
            Thread threads[] = new Thread[3];
            for(int i=0;i<3;i++){
                TaskLocalRandom task = new TaskLocalRandom();
                threads[i] = new Thread(task);
                threads[i].start();
            }
        }
    }

    3. 程序运行结果如下

    Thread-0: 1
    Thread-0: 4
    Thread-0: 0
    Thread-2: 6
    Thread-2: 5
    Thread-2: 3
    Thread-2: 0
    Thread-2: 3
    Thread-2: 1
    Thread-2: 0
    Thread-2: 4
    Thread-2: 4
    Thread-2: 9
    Thread-1: 8
    Thread-0: 2
    Thread-0: 8
    Thread-0: 5
    Thread-1: 7
    Thread-1: 0
    Thread-1: 8
    Thread-1: 1
    Thread-1: 0
    Thread-1: 0
    Thread-1: 8
    Thread-1: 4
    Thread-1: 3
    Thread-0: 7
    Thread-0: 7
    Thread-0: 4
    Thread-0: 9
    View Code

     7. 使用原子变量

      原子变量(Atomic Variable)是从Java 5开始引入的,它提供了单个变量上的原子操作。在编译程序时,Java代码中的每个变量、每个操作都将被转换成机器可以理解的指令。例如,当给一个变量赋值时,在Java代码中只使用一个指令,但是编译这个程序时,指令被转换成JVM语言中的不同指令。当多个线程共享同一个变量时,就会发生数据不一致的错误。

      为了避免这类错误,Java引入了原子变量。当一个线程在对原子变量操作时,如果其他线程也试图对同一原子变量执行操作,原子变量的实现类提供了一套机制来检查操作是否在一步内完成。一般来说,这个操作先获取变量值,然后在本地改变变量的值,然后试图用这个改变的值去替换之前的值。如果之前的值没有被其他线程改变,就可以执行这个替换操作。否则,方法将再执行这个操作。这种操作称之为CAS原子操作(Compare and Set)。

      原子变量不使用锁或者其他同步机制来保护对其值的并发访问。所有操作都是基于CAS原子操作的。它保证了多线程在同一时间操作一个原子变量而不会产生数据不一致的错误,并且它的性能优于使用同步机制保护的普通变量。

      本节将要学习如何使用原子变量实现一个银行账号和两个不同的任务:一个加钱到账号上,另一个从账号上取钱。在例子的实现中使用了AtomicLong类。

    1. 创建名为Account的类来模拟银行账户。

    import java.util.concurrent.atomic.AtomicLong;
    
    public class Account {
        //存放账户余额
        private AtomicLong balance;
        
        public Account(){
            balance = new AtomicLong();
        }
    
        public long getBalance() {
            return balance.get();
        }
    
        public void setBalance(long balance) {
            this.balance.set(balance);
        }
        //增加余额
        public void addAccount(long amount){
            this.balance.getAndAdd(amount);
        }
        //减少余额
        public void substractAmount(long amount){
            this.balance.getAndAdd(-amount);
        }
    }

    2. 创建一个名为Company的类并实现Runnable接口。这个类模拟公司的付款。

    public class Company implements Runnable {
        private Account account;
        
        public Company(Account account){
            this.account = account;
        }
        
        @Override
        public void run() {
            for(int i=0;i<10;i++){
                account.addAccount(1000);
            }
    
        }
    
    }

    3. 创建名为Bank的类并实现Runnable接口。这个类模拟从账户中取钱。

    public class Bank implements Runnable {
        private Account account;
        
        public Bank(Account account){
            this.account = account;
        }
        
        @Override
        public void run() {
            for(int i=0;i<10;i++){
                account.substractAmount(1000);
            }
    
        }
    
    }

    4. 创建名为Main的主类,并实现main()方法。

    public class Main {
    
        public static void main(String[] args) {
            Account account = new Account();
            account.setBalance(1000);
            Company company = new Company(account);
            Thread companyThread = new Thread(company);
            Bank bank = new Bank(account);
            Thread bankThread = new Thread(bank);
            System.out.printf("Account : Initial Balance: %d
    ", account.getBalance());
            companyThread.start();
            bankThread.start();
            //等待所有线程执行结束
            try {
                companyThread.join();
                bankThread.join();
                System.out.printf("Account : Final Balance: %d
    ", account.getBalance());
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }

    5. 程序运行结果如下

    Account : Initial Balance: 1000
    Account : Final Balance: 1000

      Java还提供了其他的原子类,AtomicBoolean、AtomicInteger和AtomicReference是原子类的其他实现类。

    8. 使用原子数组

      当发现一个并发应用时,将不可避免地会有多线程共享一个或者多个对象的现象,为了避免数据不一致错误,需要使用同步机制(如锁或synchronized关键字)来保护对这些共享属性的访问。但是,这些同步机制存在下列问题。

    • 死锁:一个线程被阻塞,并且试图获得的锁正被其他线程使用,但其他线程永远不会释放这个锁。这种情况使得应用不会继续执行,并且永远不会结束。
    • 即使只有一个线程访问共享对象,它仍然需要执行必须的代码来获取和释放锁。

      针对这种情况,为了提供更优的性能,Java于是引入了比较和交换操作(Compare-and-Swap Operation)。这个操作使用以下三步修改变量的值。

    1. 取得变量值,即变量的旧值。
    2. 在一个临时变量中修改变量值,即变量的新值。
    3. 如果上面获得的变量旧值与当前变量值相等,就用新值替换旧值。如果已有其他线程修改了这个变量的值,上面获得的变量的旧值就可能与当前变量值不同。

      采用比较和交换机制不需要使用同步机制,不仅可以避免死锁并且性能更好。

      Java在原子变量中实现了这种机制。这些变量提供了实现比较和交换操作的comparaAndSet()方法,其他方法也基于它展开。

      Java也引入了原子数组(Atomic Array)提供对integer或long数字数组的原子操作。本节将学习如何使用AtomicIntegerArray类的原子数组。

    1. 创建名为Incrementer的类实现Runnable接口。

    import java.util.concurrent.atomic.AtomicIntegerArray;
    
    
    public class Incrementer implements Runnable {
        private AtomicIntegerArray vector;
        
        public Incrementer(AtomicIntegerArray vector){
            this.vector = vector;
        }
        
        @Override
        public void run() {
            for(int i=0;i<vector.length();i++){
                vector.getAndIncrement(i);
            }
    
        }
    
    }

    2. 创建名为Decrementer的类并实现Runnable接口。

    import java.util.concurrent.atomic.AtomicIntegerArray;
    
    
    public class Decrementer implements Runnable {
        private AtomicIntegerArray vector;
        
        public Decrementer(AtomicIntegerArray vector){
            this.vector = vector;
        }
        
        @Override
        public void run() {
            for(int i=0;i<vector.length();i++){
                this.vector.getAndDecrement(i);
            }
    
        }
    
    }

    3. 创建范例的主类Main,并实现main()方法。

    import java.util.concurrent.atomic.AtomicIntegerArray;
    
    public class Main {
    
        public static void main(String[] args) {
            //创建有1000个元素的原子数组
            final int THREADS = 1000;
            AtomicIntegerArray vector = new AtomicIntegerArray(THREADS);
            Incrementer incrementer = new Incrementer(vector);
            Decrementer decrementer = new Decrementer(vector);
            Thread threadIncrementer[] = new Thread[THREADS];
            Thread threadDecrementer[] = new Thread[THREADS];
            for(int i=0;i<THREADS;i++){
                threadIncrementer[i] = new Thread(incrementer);
                threadDecrementer[i] = new Thread(decrementer);
                threadIncrementer[i].start();
                threadDecrementer[i].start();
            }
            try {
                for(int i=0;i<THREADS;i++){
                    threadIncrementer[i].join();
                    threadDecrementer[i].join();
                }
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            for(int i=0;i<vector.length();i++){
                if(vector.get(i)!=0)
                    System.out.printf("Vector[%d] : %d
    ", i, vector.get(i));
            }
            System.out.println("Main: End of the example");
        }
    }

    4. 程序运行结果如下

    Main: End of the example

      Java还提供了另一个原子数组类,即AtomicLongArray类,它的方法与AtomicIntegeArray类相同。

      这些原子数组还提供了其他方法。

    • get(int i):返回数组中由参数指定位置的值。
    • set(int i, int newValue):设置由参数指定位置的新值。
  • 相关阅读:
    分布式集群系统下的高可用session解决方案
    Google大数据三篇著名论文中文版
    12款免费与开源的NoSQL数据库介绍
    揭密Node.js 盛行的因由(转载)
    lion.ec开源框架简介(原创)
    2.2 Hadoop Studio 使用 [Hadoop学习笔记]
    spring3.2+ehcache 注解使用
    Venus 是一个简单的、高性能、高并发能力的java 开源Remoting框架
    ZooKeeper原理分析
    Netty系列之Netty高性能之道(转载InfoQ)
  • 原文地址:https://www.cnblogs.com/gaopeng527/p/4913706.html
Copyright © 2011-2022 走看看