博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
并发集合
阅读量:4589 次
发布时间:2019-06-09

本文共 130710 字,大约阅读时间需要 435 分钟。

  当需要在并发程序中使用数据集合时,必须要谨慎地选择相应的实现方式。大多数集合类不能直接用于并发应用,因为它们没有对本身数据的并发访问进行控制。如果一些并发任务共享了一个不适用于并发任务的数据结构,将会遇到数据不一致的错误,并将影响程序的准确运行。这类数据结构的一个例子是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
list; public AddTask(ConcurrentLinkedDeque
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
list; public PollTask(ConcurrentLinkedDeque
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
list = new ConcurrentLinkedDeque<>(); //创建线程数组threads,它包含100个线程 Thread[] threads = new Thread[100]; for(int i=0;i

4. 程序运行结果如下

Main: 100 AddTask threads have been launchedMain: Size of the List: 1000000Main: 100 PollTask threads have been launchedMain: 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
requestList; public Client(LinkedBlockingDeque
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.\n", sb.toString(), new Date()); } TimeUnit.SECONDS.sleep(2); } } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println("Client: End\n"); }}

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

import java.util.Date;import java.util.concurrent.LinkedBlockingDeque;public class Main {    public static void main(String[] args) {        //指定固定容量        LinkedBlockingDeque
list = new LinkedBlockingDeque
(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\n", 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: 0Main: Request: 0:1 at Tue Oct 27 14:43:03 CST 2015. Size: 0Client: 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: 0Client: 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: 1Main: Request: 0:4 at Tue Oct 27 14:43:03 CST 2015. Size: 0Client: 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: 0Main: Request: 1:1 at Tue Oct 27 14:43:05 CST 2015. Size: 2Client: 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: 2Main: Request: 1:3 at Tue Oct 27 14:43:05 CST 2015. Size: 1Main: Request: 1:4 at Tue Oct 27 14:43:05 CST 2015. Size: 0Client: 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: 0Main: Request: 2:1 at Tue Oct 27 14:43:07 CST 2015. Size: 2Client: 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: 2Main: Request: 2:3 at Tue Oct 27 14:43:07 CST 2015. Size: 1Main: Request: 2:4 at Tue Oct 27 14:43:07 CST 2015. Size: 0Main: End of the program.Client: End
View Code

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

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

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

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

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

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

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

public class Event implements Comparable
{ 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

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

import java.util.concurrent.PriorityBlockingQueue;public class Task implements Runnable {    private int id;    private PriorityBlockingQueue
queue; public Task(int id, PriorityBlockingQueue
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
queue = new PriorityBlockingQueue<>(); Thread taskThreads[] = new Thread[5]; for(int i=0;i

4. 程序运行结果如下

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

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

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

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

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

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

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

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

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

import java.util.Date;import java.util.concurrent.DelayQueue;public class Task implements Runnable {    private int id;    private DelayQueue
queue; public Task(int id, DelayQueue
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\n", 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
queue = new DelayQueue<>(); Thread threads[] = new Thread[5]; for(int i=0;i
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\n", 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 2015Thread 4: Tue Oct 27 16:19:34 CST 2015Thread 2: Tue Oct 27 16:19:32 CST 2015Thread 1: Tue Oct 27 16:19:31 CST 2015Thread 3: Tue Oct 27 16:19:33 CST 2015At Tue Oct 27 16:19:30 CST 2015 you have read 0 eventsAt Tue Oct 27 16:19:31 CST 2015 you have read 0 eventsAt Tue Oct 27 16:19:31 CST 2015 you have read 100 eventsAt Tue Oct 27 16:19:32 CST 2015 you have read 0 eventsAt Tue Oct 27 16:19:32 CST 2015 you have read 100 eventsAt Tue Oct 27 16:19:33 CST 2015 you have read 0 eventsAt Tue Oct 27 16:19:33 CST 2015 you have read 100 eventsAt Tue Oct 27 16:19:34 CST 2015 you have read 0 eventsAt Tue Oct 27 16:19:34 CST 2015 you have read 100 eventsAt Tue Oct 27 16:19:35 CST 2015 you have read 0 eventsAt Tue Oct 27 16:19:35 CST 2015 you have read 100 eventsMain: End.
View Code

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

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

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

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

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

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

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

  备注:Skip List由William Pugh在1990年引入,详见。

  当你插入元素到映射中时,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
map; public Task(String id, ConcurrentSkipListMap
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
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\n", map.size()); Map.Entry
element; Contact contact; //输出第一个实体 element = map.firstEntry(); contact = element.getValue(); System.out.printf("Main: First Entry: %s: %s\n", contact.getName(), contact.getPhone()); //输出最后一个实体 element = map.lastEntry(); contact = element.getValue(); System.out.printf("Main: Last Entry: %s: %s\n", contact.getName(), contact.getPhone()); //使用subMap()取得map的一个子映射,并输出到控制台。 System.out.printf("Main: Submap from A1996 to B1002: \n"); ConcurrentNavigableMap
summap = map.subMap("A1996", "B1002"); do{ element = summap.pollFirstEntry(); if(element!=null){ contact = element.getValue(); System.out.printf("%s: %s\n", contact.getName(), contact.getPhone()); } }while(element!=null); }}

4. 程序运行结果如下

Main: Size of the map: 26000Main: First Entry: A: 1000Main: Last Entry: Z: 1999Main: Submap from A1996 to B1002: A: 1996A: 1997A: 1998A: 1999B: 1000B: 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\n", 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: 1Thread-0: 4Thread-0: 0Thread-2: 6Thread-2: 5Thread-2: 3Thread-2: 0Thread-2: 3Thread-2: 1Thread-2: 0Thread-2: 4Thread-2: 4Thread-2: 9Thread-1: 8Thread-0: 2Thread-0: 8Thread-0: 5Thread-1: 7Thread-1: 0Thread-1: 8Thread-1: 1Thread-1: 0Thread-1: 0Thread-1: 8Thread-1: 4Thread-1: 3Thread-0: 7Thread-0: 7Thread-0: 4Thread-0: 9
View Code

 7. 使用原子变量

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

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

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

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

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

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

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

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

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

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

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

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

5. 程序运行结果如下

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

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

8. 使用原子数组

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

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

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

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

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

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

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

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

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

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

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

4. 程序运行结果如下

Main: End of the example

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

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

  • get(int i):返回数组中由参数指定位置的值。
  • set(int i, int newValue):设置由参数指定位置的新值。

转载于:https://www.cnblogs.com/gaopeng527/p/4913706.html

你可能感兴趣的文章
linux数码管驱动程序和应用程序
查看>>
linux在菜单中添加SEG选项
查看>>
linux物理地址和虚拟地址
查看>>
linux驱动程序与菜单关联
查看>>
linux在配置菜单中添加选项
查看>>
linux修改文件系统注册设备
查看>>
linux添加地址映射
查看>>
c#程序集
查看>>
Microsoft 中间语言
查看>>
.NET Framework 简介
查看>>
c#通用语言运行时CLR
查看>>
编译和执行 C# 应用程序
查看>>
c#命名空间
查看>>
c#字面量
查看>>
C# 应用程序文件夹结构
查看>>
c# Format() 方法
查看>>
c#实例
查看>>
c# Format() 方法
查看>>
c# String 常用方法应用
查看>>
c# 枚举和位标志
查看>>