写2个线程,其中一个线程打印1-52,另一个线程打印A-Z,打印顺序应该是12A34B56C...5152Z.

打印数字:

package com.sa.thread.练习.练习1;

import javax.swing.plaf.synth.SynthViewportUI;

/**
 * Created by 123 on 2018-07-26
 */
public class PrintNum extends Thread{
    public static boolean flag=true;
    private int start;
    private int end;
    private String threaName;

    public PrintNum() {
    }

    public PrintNum(int start, int end,String threaName) {
        this.start = start;
        this.end = end;
        this.threaName=threaName;
    }

    @Override
    public  void run() {

        for(int i=0;start<=end;i++){
            m1(i);
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }

    }

    public  synchronized void m1(int i){
        System.out.println("m1--NO------------------"+i+"次");
        if(flag==true) {
            for (int j = 0; j < 2; j++) {
                System.out.println("开始打印数字:"+start);
                start++;
            }
            flag = false;
        }
    }
}

打印字符:

package com.sa.thread.练习.练习1;

import static com.sa.thread.练习.练习1.PrintNum.flag;

/**
 * Created by 123 on 2018-07-26
 */
public class PrintChar extends Thread{
    private int start;
    private int end;
    private String threaName;

    public PrintChar(char start,char end) {

    }

    public PrintChar(int start, int end,String threaName) {
        this.start = start;
        this.end = end;
        this.threaName=threaName;
    }


    public static void main(String[] args) {
        char a='A';
        System.out.println((char)(a+1));
    }

    @Override
    public  void run() {

        for(int i=0;start<=end;i++){
            m2(i);
            try {
                Thread.sleep(500);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }


    }

    public  synchronized void m2(int i){
        System.out.println("m2--NO-----------------------------"+i+"次");
        if(flag==false){
            System.out.println("开始打印字母:"+(char)start);
            start=(char)(start+1);
            flag=true;
        }
    }
}

测试:

package com.sa.thread.练习.练习1;

/**
 * Created by 123 on 2018-07-26
 */
public class test {
    public static void main(String[] args) {
        PrintNum printNum=new PrintNum(1,52,"打印数字线程");
        PrintChar printChar=new PrintChar('A','Z',"打印字母线程");
        printNum.start();
        printChar.start();

    }
}

测试结果:

"C:\Program Files\Java\jdk1.8.0_131\bin\java" "-javaagent:E:\IDEA\IntelliJ IDEA 2017.2.2\lib\idea_rt.jar=52456:E:\IDEA\IntelliJ IDEA 2017.2.2\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files\Java\jdk1.8.0_131\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\rt.jar;E:\ideaPro2\Thread\out\production\Thread" com.sa.thread.练习.练习1.test
m1--NO------------------0次
开始打印数字:1
开始打印数字:2
m2--NO-----------------------------0次
开始打印字母:A
m2--NO-----------------------------1次
m1--NO------------------1次
开始打印数字:3
开始打印数字:4
m2--NO-----------------------------2次
开始打印字母:B
m2--NO-----------------------------3次
m1--NO------------------2次
开始打印数字:5
开始打印数字:6
m2--NO-----------------------------4次
开始打印字母:C
m2--NO-----------------------------5次
m1--NO------------------3次
开始打印数字:7
开始打印数字:8
m2--NO-----------------------------6次
开始打印字母:D
m2--NO-----------------------------7次
m1--NO------------------4次
开始打印数字:9
开始打印数字:10
m2--NO-----------------------------8次
开始打印字母:E
m2--NO-----------------------------9次
m1--NO------------------5次
开始打印数字:11
开始打印数字:12
m2--NO-----------------------------10次
开始打印字母:F
m2--NO-----------------------------11次
m1--NO------------------6次
开始打印数字:13
开始打印数字:14
m2--NO-----------------------------12次
开始打印字母:G
m2--NO-----------------------------13次
m1--NO------------------7次
开始打印数字:15
开始打印数字:16
m2--NO-----------------------------14次
开始打印字母:H
m2--NO-----------------------------15次
m1--NO------------------8次
开始打印数字:17
开始打印数字:18
m2--NO-----------------------------16次
开始打印字母:I
m2--NO-----------------------------17次
m1--NO------------------9次
开始打印数字:19
开始打印数字:20
m2--NO-----------------------------18次
开始打印字母:J
m2--NO-----------------------------19次
m1--NO------------------10次
开始打印数字:21
开始打印数字:22
m2--NO-----------------------------20次
开始打印字母:K
m2--NO-----------------------------21次
m1--NO------------------11次
开始打印数字:23
开始打印数字:24
m2--NO-----------------------------22次
开始打印字母:L
m2--NO-----------------------------23次
m1--NO------------------12次
开始打印数字:25
开始打印数字:26
m2--NO-----------------------------24次
开始打印字母:M
m2--NO-----------------------------25次
m1--NO------------------13次
开始打印数字:27
开始打印数字:28
m2--NO-----------------------------26次
开始打印字母:N
m2--NO-----------------------------27次
m1--NO------------------14次
开始打印数字:29
开始打印数字:30
m2--NO-----------------------------28次
开始打印字母:O
m2--NO-----------------------------29次
m1--NO------------------15次
开始打印数字:31
开始打印数字:32
m2--NO-----------------------------30次
开始打印字母:P
m2--NO-----------------------------31次
m1--NO------------------16次
开始打印数字:33
开始打印数字:34
m2--NO-----------------------------32次
开始打印字母:Q
m2--NO-----------------------------33次
m1--NO------------------17次
开始打印数字:35
开始打印数字:36
m2--NO-----------------------------34次
开始打印字母:R
m2--NO-----------------------------35次
m1--NO------------------18次
开始打印数字:37
开始打印数字:38
m2--NO-----------------------------36次
开始打印字母:S
m2--NO-----------------------------37次
m1--NO------------------19次
开始打印数字:39
开始打印数字:40
m2--NO-----------------------------38次
开始打印字母:T
m2--NO-----------------------------39次
m1--NO------------------20次
开始打印数字:41
开始打印数字:42
m2--NO-----------------------------40次
开始打印字母:U
m2--NO-----------------------------41次
m1--NO------------------21次
开始打印数字:43
开始打印数字:44
m2--NO-----------------------------42次
开始打印字母:V
m2--NO-----------------------------43次
m1--NO------------------22次
开始打印数字:45
开始打印数字:46
m2--NO-----------------------------44次
开始打印字母:W
m2--NO-----------------------------45次
m1--NO------------------23次
开始打印数字:47
开始打印数字:48
m2--NO-----------------------------46次
开始打印字母:X
m2--NO-----------------------------47次
m1--NO------------------24次
开始打印数字:49
开始打印数字:50
m2--NO-----------------------------48次
开始打印字母:Y
m2--NO-----------------------------49次
m1--NO------------------25次
开始打印数字:51
开始打印数字:52
m2--NO-----------------------------50次
开始打印字母:Z

Process finished with exit code 0

 

你可能感兴趣的:(线程)