当需要在并发程序中使用数据集合时,必须要谨慎地选择相应的实现方式。大多数集合类不能直接用于并发应用,因为它们没有对本身数据的并发访问进行控制。如果一些并发任务共享了一个不适用于并发任务的数据结构,将会遇到数据不一致的错误,并将影响程序的准确运行。这类数据结构的一个例子是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
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.
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.
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
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)。这个操作使用以下三步修改变量的值。
- 取得变量值,即变量的旧值。
- 在一个临时变量中修改变量值,即变量的新值。
- 如果上面获得的变量旧值与当前变量值相等,就用新值替换旧值。如果已有其他线程修改了这个变量的值,上面获得的变量的旧值就可能与当前变量值不同。
采用比较和交换机制不需要使用同步机制,不仅可以避免死锁并且性能更好。
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):设置由参数指定位置的新值。