1 线程和进程区别
每个正在系统上运行的程序都是一个进程。每个进程包含一到多个线程。线程是一组指令的集合,
或者是程序的特殊段,它可以在程序里独立执行。也可以把它理解为代码运行的上下文。所以线
程基本上是轻量级的进程,它负责在单个程序里执行多任务。通常由操作系统负责多个线程的调度和执行。
总结:进程是所有线程的集合,每一个线程是进程中的一条执行路径。
2 创建线程的方式
public class FileBatch extends Thread{ private static Logger logger = LogManager.getLogger(FileBatch.class.getName()); @Override public void run() { logger.trace("trace"); logger.debug("debug"); logger.info("info"); logger.warn("warn"); logger.error("error"); } }
public class FileDownLoad implements Runnable{ public static Logger logger = LogManager.getLogger(FileDownLoad.class.getName()); public void run() { logger.info("线程启动"); logger.exit(); } }
public class App { public static void main(String[] args) throws InterruptedException { System.out.println("main 线程启动"); // 创建方法一 : 直接继承Thread类 FileBatch fileBatch = new FileBatch(); Thread thread = null; // 开启线程start方法 fileBatch.start(); fileBatch.sleep(10); fileBatch.stop(); if (!fileBatch.isAlive()) { // 创建方法二 实现Runnable接口,通过Thread的构造方法 FileDownLoad fileDownLoad = new FileDownLoad(); thread = new Thread(fileDownLoad); thread.start(); thread.sleep(15); thread.stop(); } if (!thread.isAlive()) { // 创建方法三 匿名类 本质上和方法二是一样的 Thread th = new Thread(new Runnable() { public void run() { System.out.println("创建线程"); } }); th.start(); th.sleep(15); th.stop(); } } }
3 使用实现实现Runnable接口好,原因实现了接口还可以继续继承,继承了类不能再继承。
4,线程的几种状态
新建:new操作符创建一个线程时, 例如new Thread(r),线程还没有开始运行,此时线程处在新建状态。
就绪:当新建的线程,调用了start(),之后,start()方法创建线程运行的系统资源,并调度线程运行run()方法。当start()方法返回后,线程就处于就绪状态。
处于就绪状态的线程并不一定立即运行run()方法,线程还必须同其他线程竞争CPU时间,只有获得CPU时间才可以运行线程。因为在单CPU的计算机系统中,不可能同时运行多个线程,一个时刻仅有一个线程处于运行状态。因此此时可能有多个线程处于就绪状态。对多个处于就绪状态的线程是由Java运行时系统的线程调度程序(thread scheduler)来调度的。
运行:当线程获得CPU时间后,它才进入运行状态,真正开始执行run()方法.
阻塞:
线程运行过程中,可能由于各种原因进入阻塞状态:
1>线程通过调用sleep方法进入睡眠状态;
2>线程调用一个在I/O上被阻塞的操作,即该操作在输入输出操作完成之前不会返回到它的调用者;
3>线程试图得到一个锁,而该锁正被其他线程持有;
4>线程在等待某个触发条件;
死亡:
有两个原因会导致线程死亡:
1) run方法正常退出而自然死亡,
2) 一个未捕获的异常终止了run方法而使线程猝死。
4,利用多线程给1000个用户发送消息
思路,用10条线程同时发送,节约时间,每条线程负责的用户是100个
step1:新建用户类
public class User { private String userId; private String userName; public User(String userId, String userName){ this.userId = userId; this.userName = userName; } public String getUserId() { return userId; } public void setUserId(String userId) { this.userId = userId; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } }
step 2: 新建集合切割工具类
public class ListUtils { /** * * @methodDesc: 功能描述:(list 集合分批切割) * @author: chris */ public static <T> List<List<T>> splitList(List<T> list, int pageSize) { int listSize = list.size(); int page = (listSize + (pageSize - 1)) / pageSize; List<List<T>> listArray = new ArrayList<List<T>>(); for (int i = 0; i < page; i++) { List<T> subList = new ArrayList<T>(); for (int j = 0; j < listSize; j++) { int pageIndex = ((j + 1) + (pageSize - 1)) / pageSize; if (pageIndex == (i + 1)) { subList.add(list.get(j)); } if ((j + 1) == ((j + 1) * pageSize)) { break; } } listArray.add(subList); } return listArray; } public static <T> List<List<T>> splitList2(List<T> list, int pageSize) { int listSize = list.size(); List<T> subList = null; List<List<T>> listArray = new ArrayList<List<T>>(); for (int i = 0; i < listSize; i++) { if (i % pageSize == 0) { if (subList != null) { listArray.add(subList); } subList = new ArrayList<T>(); subList.add(list.get(i)); continue; } subList.add(list.get(i)); } if (subList != null) { listArray.add(subList); } return listArray; } }
step3 创建线程类,通过构造方法,将每个线程要处理的集合传入
public class UserThread implements Runnable { private List<User> userList; public UserThread(List<User> userList) { this.userList = userList; } public void run() { for (User user : userList) { System.out.println( Thread.currentThread().getName() + "----" + user.getUserName() + "--------" + user.getUserId()); } } }
step4 实现
private static List<User> userList; //初始化数据 public static void init(){ userList = new ArrayList<User>(); for(int i = 1; i <= 1000; i++){ User user = new User("userId"+i, "userName"+i); userList.add(user); } } public static void main(String[] args) { //初始化数据 init(); //定义每个线程处理的count int count = 100; //划分每个线程处理的用户 List<List<User>> list = ListUtils.splitList2(userList, count); for(int i = 0; i < list.size(); i++){ UserThread userThread = new UserThread(list.get(i)); Thread thread = new Thread(userThread); thread.start(); } } }
打印结果:
Thread-1----userName101--------userId101 Thread-4----userName401--------userId401 Thread-0----userName1--------userId1 Thread-0----userName2--------userId2 Thread-0----userName3--------userId3 Thread-0----userName4--------userId4 Thread-0----userName5--------userId5 Thread-0----userName6--------userId6 Thread-0----userName7--------userId7 Thread-0----userName8--------userId8 Thread-0----userName9--------userId9 Thread-0----userName10--------userId10 Thread-5----userName501--------userId501 Thread-3----userName301--------userId301 Thread-3----userName302--------userId302 Thread-3----userName303--------userId303 Thread-3----userName304--------userId304 Thread-2----userName201--------userId201 Thread-2----userName202--------userId202 Thread-8----userName801--------userId801 Thread-8----userName802--------userId802 Thread-7----userName701--------userId701 Thread-7----userName702--------userId702 Thread-9----userName901--------userId901 Thread-9----userName902--------userId902 Thread-9----userName903--------userId903 Thread-9----userName904--------userId904 Thread-9----userName905--------userId905 Thread-7----userName703--------userId703 Thread-8----userName803--------userId803 Thread-8----userName804--------userId804 Thread-8----userName805--------userId805 Thread-8----userName806--------userId806 Thread-2----userName203--------userId203 Thread-2----userName204--------userId204 Thread-3----userName305--------userId305 Thread-3----userName306--------userId306 Thread-5----userName502--------userId502 Thread-5----userName503--------userId503 Thread-0----userName11--------userId11 Thread-0----userName12--------userId12 Thread-4----userName402--------userId402 Thread-4----userName403--------userId403 Thread-6----userName601--------userId601 Thread-6----userName602--------userId602 Thread-6----userName603--------userId603 Thread-1----userName102--------userId102 Thread-1----userName103--------userId103 Thread-1----userName104--------userId104 Thread-1----userName105--------userId105 Thread-1----userName106--------userId106 Thread-6----userName604--------userId604 Thread-6----userName605--------userId605 Thread-6----userName606--------userId606 Thread-6----userName607--------userId607 Thread-4----userName404--------userId404 Thread-4----userName405--------userId405 Thread-0----userName13--------userId13 Thread-0----userName14--------userId14 Thread-5----userName504--------userId504 Thread-3----userName307--------userId307 Thread-2----userName205--------userId205 Thread-8----userName807--------userId807 Thread-8----userName808--------userId808 Thread-8----userName809--------userId809 Thread-8----userName810--------userId810 Thread-8----userName811--------userId811 Thread-7----userName704--------userId704 Thread-7----userName705--------userId705 Thread-7----userName706--------userId706 Thread-7----userName707--------userId707 Thread-7----userName708--------userId708 Thread-7----userName709--------userId709 Thread-7----userName710--------userId710 Thread-7----userName711--------userId711 Thread-9----userName906--------userId906 Thread-7----userName712--------userId712 Thread-7----userName713--------userId713 Thread-8----userName812--------userId812 Thread-8----userName813--------userId813 Thread-8----userName814--------userId814 Thread-8----userName815--------userId815 Thread-8----userName816--------userId816 Thread-2----userName206--------userId206 Thread-2----userName207--------userId207 Thread-2----userName208--------userId208 Thread-2----userName209--------userId209 Thread-2----userName210--------userId210 Thread-3----userName308--------userId308 Thread-3----userName309--------userId309 Thread-3----userName310--------userId310 Thread-3----userName311--------userId311 Thread-3----userName312--------userId312 Thread-3----userName313--------userId313 Thread-3----userName314--------userId314 Thread-3----userName315--------userId315 Thread-3----userName316--------userId316 Thread-3----userName317--------userId317 Thread-3----userName318--------userId318 Thread-3----userName319--------userId319 Thread-3----userName320--------userId320 Thread-3----userName321--------userId321 Thread-3----userName322--------userId322 Thread-3----userName323--------userId323 Thread-3----userName324--------userId324 Thread-3----userName325--------userId325 Thread-3----userName326--------userId326 Thread-3----userName327--------userId327 Thread-3----userName328--------userId328 Thread-3----userName329--------userId329 Thread-3----userName330--------userId330 Thread-3----userName331--------userId331 Thread-3----userName332--------userId332 Thread-3----userName333--------userId333 Thread-3----userName334--------userId334 Thread-3----userName335--------userId335 Thread-3----userName336--------userId336 Thread-3----userName337--------userId337 Thread-5----userName505--------userId505 Thread-5----userName506--------userId506 Thread-5----userName507--------userId507 Thread-5----userName508--------userId508 Thread-5----userName509--------userId509 Thread-5----userName510--------userId510 Thread-5----userName511--------userId511 Thread-5----userName512--------userId512 Thread-0----userName15--------userId15 Thread-0----userName16--------userId16 Thread-4----userName406--------userId406 Thread-6----userName608--------userId608 Thread-1----userName107--------userId107 Thread-1----userName108--------userId108 Thread-1----userName109--------userId109 Thread-1----userName110--------userId110 Thread-1----userName111--------userId111 Thread-1----userName112--------userId112 Thread-1----userName113--------userId113 Thread-6----userName609--------userId609 Thread-4----userName407--------userId407 Thread-4----userName408--------userId408 Thread-4----userName409--------userId409 Thread-4----userName410--------userId410 Thread-4----userName411--------userId411 Thread-4----userName412--------userId412 Thread-4----userName413--------userId413 Thread-4----userName414--------userId414 Thread-0----userName17--------userId17 Thread-5----userName513--------userId513 Thread-5----userName514--------userId514 Thread-5----userName515--------userId515 Thread-5----userName516--------userId516 Thread-5----userName517--------userId517 Thread-5----userName518--------userId518 Thread-5----userName519--------userId519 Thread-5----userName520--------userId520 Thread-5----userName521--------userId521 Thread-5----userName522--------userId522 Thread-5----userName523--------userId523 Thread-5----userName524--------userId524 Thread-5----userName525--------userId525 Thread-5----userName526--------userId526 Thread-5----userName527--------userId527 Thread-5----userName528--------userId528 Thread-3----userName338--------userId338 Thread-2----userName211--------userId211 Thread-8----userName817--------userId817 Thread-8----userName818--------userId818 Thread-8----userName819--------userId819 Thread-8----userName820--------userId820 Thread-8----userName821--------userId821 Thread-8----userName822--------userId822 Thread-7----userName714--------userId714 Thread-9----userName907--------userId907 Thread-7----userName715--------userId715 Thread-7----userName716--------userId716 Thread-7----userName717--------userId717 Thread-7----userName718--------userId718 Thread-7----userName719--------userId719 Thread-7----userName720--------userId720 Thread-7----userName721--------userId721 Thread-7----userName722--------userId722 Thread-7----userName723--------userId723 Thread-7----userName724--------userId724 Thread-8----userName823--------userId823 Thread-8----userName824--------userId824 Thread-8----userName825--------userId825 Thread-2----userName212--------userId212 Thread-3----userName339--------userId339 Thread-3----userName340--------userId340 Thread-3----userName341--------userId341 Thread-3----userName342--------userId342 Thread-3----userName343--------userId343 Thread-3----userName344--------userId344 Thread-3----userName345--------userId345 Thread-3----userName346--------userId346 Thread-3----userName347--------userId347 Thread-3----userName348--------userId348 Thread-5----userName529--------userId529 Thread-0----userName18--------userId18 Thread-0----userName19--------userId19 Thread-0----userName20--------userId20 Thread-0----userName21--------userId21 Thread-0----userName22--------userId22 Thread-0----userName23--------userId23 Thread-0----userName24--------userId24 Thread-0----userName25--------userId25 Thread-0----userName26--------userId26 Thread-0----userName27--------userId27 Thread-4----userName415--------userId415 Thread-6----userName610--------userId610 Thread-6----userName611--------userId611 Thread-6----userName612--------userId612 Thread-6----userName613--------userId613 Thread-6----userName614--------userId614 Thread-6----userName615--------userId615 Thread-6----userName616--------userId616 Thread-1----userName114--------userId114 Thread-1----userName115--------userId115 Thread-1----userName116--------userId116 Thread-1----userName117--------userId117 Thread-1----userName118--------userId118 Thread-1----userName119--------userId119 Thread-1----userName120--------userId120 Thread-1----userName121--------userId121 Thread-6----userName617--------userId617 Thread-4----userName416--------userId416 Thread-0----userName28--------userId28 Thread-0----userName29--------userId29 Thread-5----userName530--------userId530 Thread-5----userName531--------userId531 Thread-3----userName349--------userId349 Thread-3----userName350--------userId350 Thread-3----userName351--------userId351 Thread-3----userName352--------userId352 Thread-2----userName213--------userId213 Thread-2----userName214--------userId214 Thread-2----userName215--------userId215 Thread-2----userName216--------userId216 Thread-8----userName826--------userId826 Thread-7----userName725--------userId725 Thread-7----userName726--------userId726 Thread-7----userName727--------userId727 Thread-7----userName728--------userId728 Thread-7----userName729--------userId729 Thread-7----userName730--------userId730 Thread-7----userName731--------userId731 Thread-9----userName908--------userId908 Thread-9----userName909--------userId909 Thread-9----userName910--------userId910 Thread-7----userName732--------userId732 Thread-7----userName733--------userId733 Thread-8----userName827--------userId827 Thread-2----userName217--------userId217 Thread-3----userName353--------userId353 Thread-3----userName354--------userId354 Thread-3----userName355--------userId355 Thread-3----userName356--------userId356 Thread-5----userName532--------userId532 Thread-5----userName533--------userId533 Thread-5----userName534--------userId534 Thread-5----userName535--------userId535 Thread-5----userName536--------userId536 Thread-5----userName537--------userId537 Thread-5----userName538--------userId538 Thread-5----userName539--------userId539 Thread-5----userName540--------userId540 Thread-5----userName541--------userId541 Thread-0----userName30--------userId30 Thread-4----userName417--------userId417 Thread-4----userName418--------userId418 Thread-4----userName419--------userId419 Thread-4----userName420--------userId420 Thread-4----userName421--------userId421 Thread-4----userName422--------userId422 Thread-4----userName423--------userId423 Thread-4----userName424--------userId424 Thread-4----userName425--------userId425 Thread-4----userName426--------userId426 Thread-6----userName618--------userId618 Thread-1----userName122--------userId122 Thread-6----userName619--------userId619 Thread-6----userName620--------userId620 Thread-6----userName621--------userId621 Thread-6----userName622--------userId622 Thread-6----userName623--------userId623 Thread-4----userName427--------userId427 Thread-0----userName31--------userId31 Thread-0----userName32--------userId32 Thread-5----userName542--------userId542 Thread-5----userName543--------userId543 Thread-5----userName544--------userId544 Thread-5----userName545--------userId545 Thread-5----userName546--------userId546 Thread-5----userName547--------userId547 Thread-5----userName548--------userId548 Thread-5----userName549--------userId549 Thread-5----userName550--------userId550 Thread-5----userName551--------userId551 Thread-5----userName552--------userId552 Thread-3----userName357--------userId357 Thread-2----userName218--------userId218 Thread-2----userName219--------userId219 Thread-2----userName220--------userId220 Thread-2----userName221--------userId221 Thread-2----userName222--------userId222 Thread-2----userName223--------userId223 Thread-2----userName224--------userId224 Thread-2----userName225--------userId225 Thread-2----userName226--------userId226 Thread-2----userName227--------userId227 Thread-2----userName228--------userId228 Thread-2----userName229--------userId229 Thread-8----userName828--------userId828 Thread-8----userName829--------userId829 Thread-8----userName830--------userId830 Thread-8----userName831--------userId831 Thread-8----userName832--------userId832 Thread-8----userName833--------userId833 Thread-8----userName834--------userId834 Thread-8----userName835--------userId835 Thread-7----userName734--------userId734 Thread-7----userName735--------userId735 Thread-7----userName736--------userId736 Thread-7----userName737--------userId737 Thread-7----userName738--------userId738 Thread-7----userName739--------userId739 Thread-9----userName911--------userId911 Thread-7----userName740--------userId740 Thread-8----userName836--------userId836 Thread-8----userName837--------userId837 Thread-8----userName838--------userId838 Thread-8----userName839--------userId839 Thread-8----userName840--------userId840 Thread-8----userName841--------userId841 Thread-8----userName842--------userId842 Thread-8----userName843--------userId843 Thread-8----userName844--------userId844 Thread-8----userName845--------userId845 Thread-2----userName230--------userId230 Thread-3----userName358--------userId358 Thread-5----userName553--------userId553 Thread-5----userName554--------userId554 Thread-5----userName555--------userId555 Thread-5----userName556--------userId556 Thread-5----userName557--------userId557 Thread-5----userName558--------userId558 Thread-5----userName559--------userId559 Thread-5----userName560--------userId560 Thread-0----userName33--------userId33 Thread-4----userName428--------userId428 Thread-6----userName624--------userId624 Thread-6----userName625--------userId625 Thread-6----userName626--------userId626 Thread-1----userName123--------userId123 Thread-6----userName627--------userId627 Thread-6----userName628--------userId628 Thread-6----userName629--------userId629 Thread-6----userName630--------userId630 Thread-6----userName631--------userId631 Thread-6----userName632--------userId632 Thread-6----userName633--------userId633 Thread-6----userName634--------userId634 Thread-6----userName635--------userId635 Thread-6----userName636--------userId636 Thread-6----userName637--------userId637 Thread-6----userName638--------userId638 Thread-6----userName639--------userId639 Thread-6----userName640--------userId640 Thread-4----userName429--------userId429 Thread-4----userName430--------userId430 Thread-4----userName431--------userId431 Thread-0----userName34--------userId34 Thread-0----userName35--------userId35 Thread-0----userName36--------userId36 Thread-5----userName561--------userId561 Thread-5----userName562--------userId562 Thread-3----userName359--------userId359 Thread-3----userName360--------userId360 Thread-3----userName361--------userId361 Thread-3----userName362--------userId362 Thread-2----userName231--------userId231 Thread-2----userName232--------userId232 Thread-2----userName233--------userId233 Thread-2----userName234--------userId234 Thread-8----userName846--------userId846 Thread-8----userName847--------userId847 Thread-8----userName848--------userId848 Thread-8----userName849--------userId849 Thread-8----userName850--------userId850 Thread-8----userName851--------userId851 Thread-8----userName852--------userId852 Thread-8----userName853--------userId853 Thread-8----userName854--------userId854 Thread-8----userName855--------userId855 Thread-8----userName856--------userId856 Thread-8----userName857--------userId857 Thread-8----userName858--------userId858 Thread-8----userName859--------userId859 Thread-8----userName860--------userId860 Thread-7----userName741--------userId741 Thread-7----userName742--------userId742 Thread-7----userName743--------userId743 Thread-7----userName744--------userId744 Thread-7----userName745--------userId745 Thread-7----userName746--------userId746 Thread-7----userName747--------userId747 Thread-7----userName748--------userId748 Thread-7----userName749--------userId749 Thread-7----userName750--------userId750 Thread-7----userName751--------userId751 Thread-7----userName752--------userId752 Thread-7----userName753--------userId753 Thread-7----userName754--------userId754 Thread-7----userName755--------userId755 Thread-7----userName756--------userId756 Thread-7----userName757--------userId757 Thread-7----userName758--------userId758 Thread-7----userName759--------userId759 Thread-9----userName912--------userId912 Thread-9----userName913--------userId913 Thread-7----userName760--------userId760 Thread-7----userName761--------userId761 Thread-7----userName762--------userId762 Thread-8----userName861--------userId861 Thread-8----userName862--------userId862 Thread-8----userName863--------userId863 Thread-8----userName864--------userId864 Thread-2----userName235--------userId235 Thread-3----userName363--------userId363 Thread-3----userName364--------userId364 Thread-3----userName365--------userId365 Thread-3----userName366--------userId366 Thread-3----userName367--------userId367 Thread-5----userName563--------userId563 Thread-0----userName37--------userId37 Thread-0----userName38--------userId38 Thread-0----userName39--------userId39 Thread-4----userName432--------userId432 Thread-4----userName433--------userId433 Thread-4----userName434--------userId434 Thread-4----userName435--------userId435 Thread-4----userName436--------userId436 Thread-4----userName437--------userId437 Thread-4----userName438--------userId438 Thread-4----userName439--------userId439 Thread-4----userName440--------userId440 Thread-4----userName441--------userId441 Thread-4----userName442--------userId442 Thread-4----userName443--------userId443 Thread-4----userName444--------userId444 Thread-6----userName641--------userId641 Thread-1----userName124--------userId124 Thread-6----userName642--------userId642 Thread-4----userName445--------userId445 Thread-4----userName446--------userId446 Thread-4----userName447--------userId447 Thread-4----userName448--------userId448 Thread-4----userName449--------userId449 Thread-4----userName450--------userId450 Thread-4----userName451--------userId451 Thread-0----userName40--------userId40 Thread-0----userName41--------userId41 Thread-5----userName564--------userId564 Thread-3----userName368--------userId368 Thread-2----userName236--------userId236 Thread-2----userName237--------userId237 Thread-2----userName238--------userId238 Thread-2----userName239--------userId239 Thread-8----userName865--------userId865 Thread-7----userName763--------userId763 Thread-7----userName764--------userId764 Thread-7----userName765--------userId765 Thread-7----userName766--------userId766 Thread-7----userName767--------userId767 Thread-7----userName768--------userId768 Thread-7----userName769--------userId769 Thread-7----userName770--------userId770 Thread-7----userName771--------userId771 Thread-9----userName914--------userId914 Thread-7----userName772--------userId772 Thread-7----userName773--------userId773 Thread-7----userName774--------userId774 Thread-7----userName775--------userId775 Thread-8----userName866--------userId866 Thread-8----userName867--------userId867 Thread-8----userName868--------userId868 Thread-8----userName869--------userId869 Thread-8----userName870--------userId870 Thread-8----userName871--------userId871 Thread-8----userName872--------userId872 Thread-8----userName873--------userId873 Thread-8----userName874--------userId874 Thread-2----userName240--------userId240 Thread-2----userName241--------userId241 Thread-2----userName242--------userId242 Thread-3----userName369--------userId369 Thread-3----userName370--------userId370 Thread-3----userName371--------userId371 Thread-5----userName565--------userId565 Thread-5----userName566--------userId566 Thread-5----userName567--------userId567 Thread-5----userName568--------userId568 Thread-0----userName42--------userId42 Thread-4----userName452--------userId452 Thread-5----userName569--------userId569 Thread-5----userName570--------userId570 Thread-5----userName571--------userId571 Thread-6----userName643--------userId643 Thread-6----userName644--------userId644 Thread-6----userName645--------userId645 Thread-1----userName125--------userId125 Thread-1----userName126--------userId126 Thread-1----userName127--------userId127 Thread-6----userName646--------userId646 Thread-6----userName647--------userId647 Thread-6----userName648--------userId648 Thread-6----userName649--------userId649 Thread-6----userName650--------userId650 Thread-6----userName651--------userId651 Thread-6----userName652--------userId652 Thread-6----userName653--------userId653 Thread-6----userName654--------userId654 Thread-6----userName655--------userId655 Thread-5----userName572--------userId572 Thread-5----userName573--------userId573 Thread-5----userName574--------userId574 Thread-5----userName575--------userId575 Thread-5----userName576--------userId576 Thread-5----userName577--------userId577 Thread-5----userName578--------userId578 Thread-0----userName43--------userId43 Thread-4----userName453--------userId453 Thread-4----userName454--------userId454 Thread-4----userName455--------userId455 Thread-4----userName456--------userId456 Thread-4----userName457--------userId457 Thread-4----userName458--------userId458 Thread-4----userName459--------userId459 Thread-3----userName372--------userId372 Thread-2----userName243--------userId243 Thread-8----userName875--------userId875 Thread-8----userName876--------userId876 Thread-8----userName877--------userId877 Thread-8----userName878--------userId878 Thread-8----userName879--------userId879 Thread-8----userName880--------userId880 Thread-8----userName881--------userId881 Thread-8----userName882--------userId882 Thread-8----userName883--------userId883 Thread-7----userName776--------userId776 Thread-9----userName915--------userId915 Thread-9----userName916--------userId916 Thread-9----userName917--------userId917 Thread-9----userName918--------userId918 Thread-9----userName919--------userId919 Thread-9----userName920--------userId920 Thread-9----userName921--------userId921 Thread-9----userName922--------userId922 Thread-9----userName923--------userId923 Thread-9----userName924--------userId924 Thread-9----userName925--------userId925 Thread-9----userName926--------userId926 Thread-9----userName927--------userId927 Thread-9----userName928--------userId928 Thread-9----userName929--------userId929 Thread-9----userName930--------userId930 Thread-9----userName931--------userId931 Thread-9----userName932--------userId932 Thread-9----userName933--------userId933 Thread-9----userName934--------userId934 Thread-9----userName935--------userId935 Thread-9----userName936--------userId936 Thread-9----userName937--------userId937 Thread-7----userName777--------userId777 Thread-7----userName778--------userId778 Thread-7----userName779--------userId779 Thread-7----userName780--------userId780 Thread-7----userName781--------userId781 Thread-7----userName782--------userId782 Thread-7----userName783--------userId783 Thread-7----userName784--------userId784 Thread-7----userName785--------userId785 Thread-7----userName786--------userId786 Thread-7----userName787--------userId787 Thread-7----userName788--------userId788 Thread-8----userName884--------userId884 Thread-8----userName885--------userId885 Thread-8----userName886--------userId886 Thread-8----userName887--------userId887 Thread-8----userName888--------userId888 Thread-8----userName889--------userId889 Thread-8----userName890--------userId890 Thread-8----userName891--------userId891 Thread-8----userName892--------userId892 Thread-8----userName893--------userId893 Thread-8----userName894--------userId894 Thread-8----userName895--------userId895 Thread-8----userName896--------userId896 Thread-8----userName897--------userId897 Thread-8----userName898--------userId898 Thread-8----userName899--------userId899 Thread-8----userName900--------userId900 Thread-2----userName244--------userId244 Thread-2----userName245--------userId245 Thread-2----userName246--------userId246 Thread-2----userName247--------userId247 Thread-2----userName248--------userId248 Thread-2----userName249--------userId249 Thread-2----userName250--------userId250 Thread-2----userName251--------userId251 Thread-2----userName252--------userId252 Thread-2----userName253--------userId253 Thread-2----userName254--------userId254 Thread-2----userName255--------userId255 Thread-2----userName256--------userId256 Thread-2----userName257--------userId257 Thread-2----userName258--------userId258 Thread-3----userName373--------userId373 Thread-3----userName374--------userId374 Thread-3----userName375--------userId375 Thread-3----userName376--------userId376 Thread-3----userName377--------userId377 Thread-4----userName460--------userId460 Thread-0----userName44--------userId44 Thread-0----userName45--------userId45 Thread-0----userName46--------userId46 Thread-0----userName47--------userId47 Thread-0----userName48--------userId48 Thread-0----userName49--------userId49 Thread-0----userName50--------userId50 Thread-0----userName51--------userId51 Thread-0----userName52--------userId52 Thread-5----userName579--------userId579 Thread-0----userName53--------userId53 Thread-0----userName54--------userId54 Thread-0----userName55--------userId55 Thread-0----userName56--------userId56 Thread-0----userName57--------userId57 Thread-0----userName58--------userId58 Thread-0----userName59--------userId59 Thread-0----userName60--------userId60 Thread-0----userName61--------userId61 Thread-0----userName62--------userId62 Thread-0----userName63--------userId63 Thread-0----userName64--------userId64 Thread-0----userName65--------userId65 Thread-0----userName66--------userId66 Thread-0----userName67--------userId67 Thread-0----userName68--------userId68 Thread-6----userName656--------userId656 Thread-1----userName128--------userId128 Thread-1----userName129--------userId129 Thread-1----userName130--------userId130 Thread-1----userName131--------userId131 Thread-6----userName657--------userId657 Thread-0----userName69--------userId69 Thread-0----userName70--------userId70 Thread-0----userName71--------userId71 Thread-0----userName72--------userId72 Thread-0----userName73--------userId73 Thread-0----userName74--------userId74 Thread-0----userName75--------userId75 Thread-0----userName76--------userId76 Thread-0----userName77--------userId77 Thread-0----userName78--------userId78 Thread-0----userName79--------userId79 Thread-0----userName80--------userId80 Thread-0----userName81--------userId81 Thread-0----userName82--------userId82 Thread-0----userName83--------userId83 Thread-0----userName84--------userId84 Thread-0----userName85--------userId85 Thread-0----userName86--------userId86 Thread-0----userName87--------userId87 Thread-5----userName580--------userId580 Thread-4----userName461--------userId461 Thread-3----userName378--------userId378 Thread-2----userName259--------userId259 Thread-2----userName260--------userId260 Thread-2----userName261--------userId261 Thread-2----userName262--------userId262 Thread-2----userName263--------userId263 Thread-2----userName264--------userId264 Thread-2----userName265--------userId265 Thread-2----userName266--------userId266 Thread-2----userName267--------userId267 Thread-2----userName268--------userId268 Thread-7----userName789--------userId789 Thread-9----userName938--------userId938 Thread-7----userName790--------userId790 Thread-7----userName791--------userId791 Thread-7----userName792--------userId792 Thread-7----userName793--------userId793 Thread-7----userName794--------userId794 Thread-7----userName795--------userId795 Thread-2----userName269--------userId269 Thread-3----userName379--------userId379 Thread-4----userName462--------userId462 Thread-5----userName581--------userId581 Thread-0----userName88--------userId88 Thread-6----userName658--------userId658 Thread-6----userName659--------userId659 Thread-6----userName660--------userId660 Thread-6----userName661--------userId661 Thread-6----userName662--------userId662 Thread-6----userName663--------userId663 Thread-6----userName664--------userId664 Thread-6----userName665--------userId665 Thread-1----userName132--------userId132 Thread-6----userName666--------userId666 Thread-0----userName89--------userId89 Thread-5----userName582--------userId582 Thread-5----userName583--------userId583 Thread-5----userName584--------userId584 Thread-5----userName585--------userId585 Thread-5----userName586--------userId586 Thread-5----userName587--------userId587 Thread-5----userName588--------userId588 Thread-5----userName589--------userId589 Thread-4----userName463--------userId463 Thread-4----userName464--------userId464 Thread-4----userName465--------userId465 Thread-4----userName466--------userId466 Thread-4----userName467--------userId467 Thread-4----userName468--------userId468 Thread-4----userName469--------userId469 Thread-4----userName470--------userId470 Thread-4----userName471--------userId471 Thread-4----userName472--------userId472 Thread-4----userName473--------userId473 Thread-4----userName474--------userId474 Thread-4----userName475--------userId475 Thread-4----userName476--------userId476 Thread-4----userName477--------userId477 Thread-4----userName478--------userId478 Thread-4----userName479--------userId479 Thread-4----userName480--------userId480 Thread-3----userName380--------userId380 Thread-3----userName381--------userId381 Thread-3----userName382--------userId382 Thread-3----userName383--------userId383 Thread-3----userName384--------userId384 Thread-3----userName385--------userId385 Thread-3----userName386--------userId386 Thread-2----userName270--------userId270 Thread-2----userName271--------userId271 Thread-2----userName272--------userId272 Thread-2----userName273--------userId273 Thread-2----userName274--------userId274 Thread-2----userName275--------userId275 Thread-2----userName276--------userId276 Thread-2----userName277--------userId277 Thread-7----userName796--------userId796 Thread-7----userName797--------userId797 Thread-7----userName798--------userId798 Thread-7----userName799--------userId799 Thread-7----userName800--------userId800 Thread-9----userName939--------userId939 Thread-9----userName940--------userId940 Thread-9----userName941--------userId941 Thread-9----userName942--------userId942 Thread-2----userName278--------userId278 Thread-2----userName279--------userId279 Thread-2----userName280--------userId280 Thread-2----userName281--------userId281 Thread-2----userName282--------userId282 Thread-2----userName283--------userId283 Thread-2----userName284--------userId284 Thread-2----userName285--------userId285 Thread-3----userName387--------userId387 Thread-4----userName481--------userId481 Thread-4----userName482--------userId482 Thread-4----userName483--------userId483 Thread-4----userName484--------userId484 Thread-4----userName485--------userId485 Thread-4----userName486--------userId486 Thread-4----userName487--------userId487 Thread-4----userName488--------userId488 Thread-4----userName489--------userId489 Thread-4----userName490--------userId490 Thread-5----userName590--------userId590 Thread-5----userName591--------userId591 Thread-5----userName592--------userId592 Thread-5----userName593--------userId593 Thread-5----userName594--------userId594 Thread-5----userName595--------userId595 Thread-5----userName596--------userId596 Thread-5----userName597--------userId597 Thread-5----userName598--------userId598 Thread-0----userName90--------userId90 Thread-6----userName667--------userId667 Thread-6----userName668--------userId668 Thread-6----userName669--------userId669 Thread-6----userName670--------userId670 Thread-6----userName671--------userId671 Thread-6----userName672--------userId672 Thread-6----userName673--------userId673 Thread-6----userName674--------userId674 Thread-1----userName133--------userId133 Thread-6----userName675--------userId675 Thread-6----userName676--------userId676 Thread-6----userName677--------userId677 Thread-6----userName678--------userId678 Thread-6----userName679--------userId679 Thread-6----userName680--------userId680 Thread-6----userName681--------userId681 Thread-6----userName682--------userId682 Thread-6----userName683--------userId683 Thread-6----userName684--------userId684 Thread-6----userName685--------userId685 Thread-6----userName686--------userId686 Thread-6----userName687--------userId687 Thread-6----userName688--------userId688 Thread-6----userName689--------userId689 Thread-6----userName690--------userId690 Thread-6----userName691--------userId691 Thread-6----userName692--------userId692 Thread-6----userName693--------userId693 Thread-6----userName694--------userId694 Thread-6----userName695--------userId695 Thread-6----userName696--------userId696 Thread-6----userName697--------userId697 Thread-6----userName698--------userId698 Thread-6----userName699--------userId699 Thread-6----userName700--------userId700 Thread-0----userName91--------userId91 Thread-0----userName92--------userId92 Thread-0----userName93--------userId93 Thread-0----userName94--------userId94 Thread-0----userName95--------userId95 Thread-5----userName599--------userId599 Thread-4----userName491--------userId491 Thread-4----userName492--------userId492 Thread-4----userName493--------userId493 Thread-4----userName494--------userId494 Thread-4----userName495--------userId495 Thread-4----userName496--------userId496 Thread-4----userName497--------userId497 Thread-4----userName498--------userId498 Thread-4----userName499--------userId499 Thread-4----userName500--------userId500 Thread-3----userName388--------userId388 Thread-3----userName389--------userId389 Thread-3----userName390--------userId390 Thread-3----userName391--------userId391 Thread-3----userName392--------userId392 Thread-2----userName286--------userId286 Thread-2----userName287--------userId287 Thread-9----userName943--------userId943 Thread-2----userName288--------userId288 Thread-2----userName289--------userId289 Thread-2----userName290--------userId290 Thread-3----userName393--------userId393 Thread-2----userName291--------userId291 Thread-2----userName292--------userId292 Thread-2----userName293--------userId293 Thread-2----userName294--------userId294 Thread-2----userName295--------userId295 Thread-2----userName296--------userId296 Thread-2----userName297--------userId297 Thread-2----userName298--------userId298 Thread-2----userName299--------userId299 Thread-2----userName300--------userId300 Thread-5----userName600--------userId600 Thread-0----userName96--------userId96 Thread-0----userName97--------userId97 Thread-1----userName134--------userId134 Thread-1----userName135--------userId135 Thread-1----userName136--------userId136 Thread-1----userName137--------userId137 Thread-1----userName138--------userId138 Thread-1----userName139--------userId139 Thread-1----userName140--------userId140 Thread-0----userName98--------userId98 Thread-0----userName99--------userId99 Thread-0----userName100--------userId100 Thread-3----userName394--------userId394 Thread-3----userName395--------userId395 Thread-3----userName396--------userId396 Thread-3----userName397--------userId397 Thread-3----userName398--------userId398 Thread-3----userName399--------userId399 Thread-9----userName944--------userId944 Thread-3----userName400--------userId400 Thread-1----userName141--------userId141 Thread-1----userName142--------userId142 Thread-1----userName143--------userId143 Thread-1----userName144--------userId144 Thread-1----userName145--------userId145 Thread-1----userName146--------userId146 Thread-1----userName147--------userId147 Thread-1----userName148--------userId148 Thread-1----userName149--------userId149 Thread-1----userName150--------userId150 Thread-9----userName945--------userId945 Thread-9----userName946--------userId946 Thread-9----userName947--------userId947 Thread-9----userName948--------userId948 Thread-9----userName949--------userId949 Thread-9----userName950--------userId950 Thread-9----userName951--------userId951 Thread-1----userName151--------userId151 Thread-1----userName152--------userId152 Thread-1----userName153--------userId153 Thread-1----userName154--------userId154 Thread-9----userName952--------userId952 Thread-9----userName953--------userId953 Thread-9----userName954--------userId954 Thread-9----userName955--------userId955 Thread-9----userName956--------userId956 Thread-9----userName957--------userId957 Thread-9----userName958--------userId958 Thread-9----userName959--------userId959 Thread-9----userName960--------userId960 Thread-9----userName961--------userId961 Thread-1----userName155--------userId155 Thread-1----userName156--------userId156 Thread-1----userName157--------userId157 Thread-1----userName158--------userId158 Thread-1----userName159--------userId159 Thread-9----userName962--------userId962 Thread-9----userName963--------userId963 Thread-9----userName964--------userId964 Thread-9----userName965--------userId965 Thread-9----userName966--------userId966 Thread-9----userName967--------userId967 Thread-9----userName968--------userId968 Thread-9----userName969--------userId969 Thread-9----userName970--------userId970 Thread-9----userName971--------userId971 Thread-1----userName160--------userId160 Thread-1----userName161--------userId161 Thread-1----userName162--------userId162 Thread-1----userName163--------userId163 Thread-1----userName164--------userId164 Thread-1----userName165--------userId165 Thread-1----userName166--------userId166 Thread-9----userName972--------userId972 Thread-9----userName973--------userId973 Thread-9----userName974--------userId974 Thread-9----userName975--------userId975 Thread-9----userName976--------userId976 Thread-9----userName977--------userId977 Thread-9----userName978--------userId978 Thread-9----userName979--------userId979 Thread-9----userName980--------userId980 Thread-1----userName167--------userId167 Thread-1----userName168--------userId168 Thread-1----userName169--------userId169 Thread-9----userName981--------userId981 Thread-1----userName170--------userId170 Thread-1----userName171--------userId171 Thread-1----userName172--------userId172 Thread-1----userName173--------userId173 Thread-1----userName174--------userId174 Thread-1----userName175--------userId175 Thread-1----userName176--------userId176 Thread-1----userName177--------userId177 Thread-1----userName178--------userId178 Thread-1----userName179--------userId179 Thread-9----userName982--------userId982 Thread-9----userName983--------userId983 Thread-9----userName984--------userId984 Thread-9----userName985--------userId985 Thread-9----userName986--------userId986 Thread-9----userName987--------userId987 Thread-9----userName988--------userId988 Thread-9----userName989--------userId989 Thread-9----userName990--------userId990 Thread-1----userName180--------userId180 Thread-1----userName181--------userId181 Thread-1----userName182--------userId182 Thread-1----userName183--------userId183 Thread-1----userName184--------userId184 Thread-1----userName185--------userId185 Thread-1----userName186--------userId186 Thread-1----userName187--------userId187 Thread-1----userName188--------userId188 Thread-9----userName991--------userId991 Thread-9----userName992--------userId992 Thread-9----userName993--------userId993 Thread-9----userName994--------userId994 Thread-9----userName995--------userId995 Thread-9----userName996--------userId996 Thread-9----userName997--------userId997 Thread-9----userName998--------userId998 Thread-9----userName999--------userId999 Thread-9----userName1000--------userId1000 Thread-1----userName189--------userId189 Thread-1----userName190--------userId190 Thread-1----userName191--------userId191 Thread-1----userName192--------userId192 Thread-1----userName193--------userId193 Thread-1----userName194--------userId194 Thread-1----userName195--------userId195 Thread-1----userName196--------userId196 Thread-1----userName197--------userId197 Thread-1----userName198--------userId198 Thread-1----userName199--------userId199 Thread-1----userName200--------userId200