线程

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();
        }
    }
}

使用实现实现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
原文地址:https://www.cnblogs.com/pickKnow/p/11015122.html