2019年3月9日,多線程

java源文件分享地址:java

連接:https://pan.baidu.com/s/1-sNrVOXqnUpmARFLQMSt3g
提取碼:4hi3
複製這段內容後打開百度網盤手機App,操做更方便哦api

 

做業一:多線程

首先建立線程子類:ide

package com.com.lianxi;

public class ClimbThread extends Thread{

    private int time;
    private int num;

    public ClimbThread(String name,int time,int num){
        super(name);
        this.time = time;
        this.num = num*1000/100;

    }
    public void run() {
        String name = Thread.currentThread().getName();
        for(int i = 0;i<num;i++){
            System.out.println(name+"爬完"+(i+1)+"個一百米");
            try {
                Thread.sleep(time);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        System.out.println(name+"爬到山頂");
    }
}

最後測試類:測試

package com.com.lianxi;

public class ClimbTest {
    public static void main(String[] args) {
        ClimbThread ct1 = new ClimbThread("年輕人",500,1);
        ClimbThread ct2 = new ClimbThread("老年人",1000,1);

        ct1.start();
        ct2.start();

    }
}

輸出結果爲:this

"C:\Program Files\Java\jdk1.8.0_191\bin\java.exe" "-javaagent:G:\IntelliJ IDEA 2018.3.1\lib\idea_rt.jar=60532:G:\IntelliJ IDEA 2018.3.1\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files\Java\jdk1.8.0_191\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\rt.jar;G:\多線程\out\production\多線程" com.com.lianxi.ClimbTest
老年人爬完1個一百米
年輕人爬完1個一百米
年輕人爬完2個一百米
年輕人爬完3個一百米
老年人爬完2個一百米
年輕人爬完4個一百米
老年人爬完3個一百米
年輕人爬完5個一百米
年輕人爬完6個一百米
老年人爬完4個一百米
年輕人爬完7個一百米
年輕人爬完8個一百米
老年人爬完5個一百米
年輕人爬完9個一百米
年輕人爬完10個一百米
老年人爬完6個一百米
年輕人爬到山頂
老年人爬完7個一百米
老年人爬完8個一百米
老年人爬完9個一百米
老年人爬完10個一百米
老年人爬到山頂

Process finished with exit code 0

做業2:idea

首先建立Thread子類spa

package com.zuoye;

public class HospitalThead extends Thread{
    private int time;

    public HospitalThead(String name,int time) {
        super(name);
        this.time = time;
    }

    @Override
    public void run() {
        String name = Thread.currentThread().getName();
        for(int i = 0;i<10;i++){
            try {
                Thread.sleep(this.time);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println(name+":"+(i+1)+"號病人在看病!");
        }
    }
}

測試類:線程

package com.zuoye;

public class HospitalTest {
    public static void main(String[] args) {
        HospitalThead ht = new HospitalThead("特需號",1000);
        ht.start();
        ht.setPriority(10);
        Thread t = Thread.currentThread();
        t.setName("普通號");
        t.setPriority(1);
        for(int i = 0 ;i<50;i++){
            String name = t.getName();
            try {
                Thread.sleep(500);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println(name+":"+(i+1)+"號病人在看病!");
            if(i == 9){
                try {
                    ht.join();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }


    }
}

 

輸出結果爲:3d

"C:\Program Files\Java\jdk1.8.0_191\bin\java.exe" "-javaagent:G:\IntelliJ IDEA 2018.3.1\lib\idea_rt.jar=60585:G:\IntelliJ IDEA 2018.3.1\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files\Java\jdk1.8.0_191\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\rt.jar;G:\多線程\out\production\多線程" com.zuoye.HospitalTest
普通號:1號病人在看病!
特需號:1號病人在看病!
普通號:2號病人在看病!
普通號:3號病人在看病!
特需號:2號病人在看病!
普通號:4號病人在看病!
普通號:5號病人在看病!
特需號:3號病人在看病!
普通號:6號病人在看病!
普通號:7號病人在看病!
特需號:4號病人在看病!
普通號:8號病人在看病!
普通號:9號病人在看病!
特需號:5號病人在看病!
普通號:10號病人在看病!
特需號:6號病人在看病!
特需號:7號病人在看病!
特需號:8號病人在看病!
特需號:9號病人在看病!
特需號:10號病人在看病!
普通號:11號病人在看病!
普通號:12號病人在看病!
普通號:13號病人在看病!
普通號:14號病人在看病!
普通號:15號病人在看病!
普通號:16號病人在看病!
普通號:17號病人在看病!
普通號:18號病人在看病!
普通號:19號病人在看病!
普通號:20號病人在看病!
普通號:21號病人在看病!
普通號:22號病人在看病!
普通號:23號病人在看病!
普通號:24號病人在看病!
普通號:25號病人在看病!
普通號:26號病人在看病!
普通號:27號病人在看病!
普通號:28號病人在看病!
普通號:29號病人在看病!
普通號:30號病人在看病!
普通號:31號病人在看病!
普通號:32號病人在看病!
普通號:33號病人在看病!
普通號:34號病人在看病!
普通號:35號病人在看病!
普通號:36號病人在看病!
普通號:37號病人在看病!
普通號:38號病人在看病!
普通號:39號病人在看病!
普通號:40號病人在看病!
普通號:41號病人在看病!
普通號:42號病人在看病!
普通號:43號病人在看病!
普通號:44號病人在看病!
普通號:45號病人在看病!
普通號:46號病人在看病!
普通號:47號病人在看病!
普通號:48號病人在看病!
普通號:49號病人在看病!
普通號:50號病人在看病!

Process finished with exit code 0

做業3:

首先建立Runnable接口子類:

package com.zuoye;

public class RunRunnable implements Runnable{


    public void run() {
        synchronized (this){
            String name = Thread.currentThread().getName();
            System.out.println(Thread.currentThread().getName()+"接過接力棒");
            for(int i = 0;i<10;i++){
                try {
                    Thread.sleep(100);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println(name+"選手跑了"+(i+1)+"0米");

            }
        }
    }
}

其次建立測試類:

package com.zuoye;

public class RunTest {
    public static void main(String[] args) {
        Runnable r = new RunRunnable();
        Thread t1 = new Thread(r,"一號");
        Thread t2 = new Thread(r,"二號");
        Thread t3 = new Thread(r,"三號");
        Thread t4 = new Thread(r,"四號");
        Thread t5 = new Thread(r,"五號");
        Thread t6 = new Thread(r,"六號");
        Thread t7 = new Thread(r,"七號");
        Thread t8 = new Thread(r,"八號");
        Thread t9 = new Thread(r,"九號");
        Thread t10 = new Thread(r,"十號");
        t1.start();
        t2.start();
        t3.start();
        t4.start();
        t5.start();
        t6.start();
        t7.start();
        t8.start();
        t9.start();
        t10.start();
    }
}

輸出結果爲:

"C:\Program Files\Java\jdk1.8.0_191\bin\java.exe" "-javaagent:G:\IntelliJ IDEA 2018.3.1\lib\idea_rt.jar=49896:G:\IntelliJ IDEA 2018.3.1\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files\Java\jdk1.8.0_191\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\rt.jar;G:\多線程\out\production\多線程" com.zuoye.RunTest
一號接過接力棒
一號選手跑了10米
一號選手跑了20米
一號選手跑了30米
一號選手跑了40米
一號選手跑了50米
一號選手跑了60米
一號選手跑了70米
一號選手跑了80米
一號選手跑了90米
一號選手跑了100米
十號接過接力棒
十號選手跑了10米
十號選手跑了20米
十號選手跑了30米
十號選手跑了40米
十號選手跑了50米
十號選手跑了60米
十號選手跑了70米
十號選手跑了80米
十號選手跑了90米
十號選手跑了100米
九號接過接力棒
九號選手跑了10米
九號選手跑了20米
九號選手跑了30米
九號選手跑了40米
九號選手跑了50米
九號選手跑了60米
九號選手跑了70米
九號選手跑了80米
九號選手跑了90米
九號選手跑了100米
八號接過接力棒
八號選手跑了10米
八號選手跑了20米
八號選手跑了30米
八號選手跑了40米
八號選手跑了50米
八號選手跑了60米
八號選手跑了70米
八號選手跑了80米
八號選手跑了90米
八號選手跑了100米
七號接過接力棒
七號選手跑了10米
七號選手跑了20米
七號選手跑了30米
七號選手跑了40米
七號選手跑了50米
七號選手跑了60米
七號選手跑了70米
七號選手跑了80米
七號選手跑了90米
七號選手跑了100米
六號接過接力棒
六號選手跑了10米
六號選手跑了20米
六號選手跑了30米
六號選手跑了40米
六號選手跑了50米
六號選手跑了60米
六號選手跑了70米
六號選手跑了80米
六號選手跑了90米
六號選手跑了100米
五號接過接力棒
五號選手跑了10米
五號選手跑了20米
五號選手跑了30米
五號選手跑了40米
五號選手跑了50米
五號選手跑了60米
五號選手跑了70米
五號選手跑了80米
五號選手跑了90米
五號選手跑了100米
四號接過接力棒
四號選手跑了10米
四號選手跑了20米
四號選手跑了30米
四號選手跑了40米
四號選手跑了50米
四號選手跑了60米
四號選手跑了70米
四號選手跑了80米
四號選手跑了90米
四號選手跑了100米
三號接過接力棒
三號選手跑了10米
三號選手跑了20米
三號選手跑了30米
三號選手跑了40米
三號選手跑了50米
三號選手跑了60米
三號選手跑了70米
三號選手跑了80米
三號選手跑了90米
三號選手跑了100米
二號接過接力棒
二號選手跑了10米
二號選手跑了20米
二號選手跑了30米
二號選手跑了40米
二號選手跑了50米
二號選手跑了60米
二號選手跑了70米
二號選手跑了80米
二號選手跑了90米
二號選手跑了100米

Process finished with exit code 0

做業4:

首先建立Rnnnable接口子類

package com.zuoye;

public class PiaoRunnable implements Runnable{
    private int count = 10;
    private int num = 0;
    public void run() {
        while (true){
            try {
                Thread.sleep(500);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            synchronized (this){
                if(count<=0){
                    break;
                }
                count--;
                num++;
                System.out.println(Thread.currentThread().getName()+"搶到第"+num+"張票,剩餘:"+count+"張票");
                if(Thread.currentThread().getName().equals("黃牛黨")){
                    return;
                }

            }
        }
    }
}

最後測試類:

package com.zuoye;

public class PiaoTest {
    public static void main(String[] args) {
        PiaoRunnable pr = new PiaoRunnable();
        Thread p1 = new Thread(pr,"黃牛黨");
        Thread p2 = new Thread(pr,"桃票票");
        Thread p3 = new Thread(pr,"張票票");
        p1.start();
        p2.start();
        p3.start();
    }
}

輸出結果爲:

"C:\Program Files\Java\jdk1.8.0_191\bin\java.exe" "-javaagent:G:\IntelliJ IDEA 2018.3.1\lib\idea_rt.jar=49942:G:\IntelliJ IDEA 2018.3.1\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files\Java\jdk1.8.0_191\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_191\jre\lib\rt.jar;G:\多線程\out\production\多線程" com.zuoye.PiaoTest
張票票搶到第1張票,剩餘:9張票
桃票票搶到第2張票,剩餘:8張票
黃牛黨搶到第3張票,剩餘:7張票
張票票搶到第4張票,剩餘:6張票
桃票票搶到第5張票,剩餘:5張票
張票票搶到第6張票,剩餘:4張票
桃票票搶到第7張票,剩餘:3張票
張票票搶到第8張票,剩餘:2張票
桃票票搶到第9張票,剩餘:1張票
張票票搶到第10張票,剩餘:0張票

Process finished with exit code 0
相關文章
相關標籤/搜索