2019年3月9日,多线程
java源文件分享地址:
链接:https://pan.baidu.com/s/1-sNrVOXqnUpmARFLQMSt3g
提取码:4hi3
复制这段内容后打开百度网盘手机App,操作更方便哦
作业一:
首先创建线程子类:
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(); } }
输出结果为:
"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:
首先创建Thread子类
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(); } } } } }
输出结果为:
"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