_线程控制
-
方法名 说明 static void sleep(long millis) 使当前正在执行的线程停留(暂停执行)指定的毫秒数 void join() 等待这个线程死亡 void setDaemon(boolean on) 将此线程白哦极为守护线程,当运行的线程都是守护线程时,java虚拟机将会退出 -
package demo18; public class Thread_Demo_04 { public static void main(String[] args) { /* static void sleep(long millis) 使当前正在执行的线程停留(暂停执行)指定的毫秒数 void join() 等待这个线程死亡 void setDaemon(boolean on) 将此线程白哦极为守护线程,当运行的线程都是守护线程时,java虚拟机将会退出 */ MyThread_04 m1 = new MyThread_04("火箭弹"); MyThread_04 m2 = new MyThread_04("意大利炮"); MyThread_04 m3 = new MyThread_04("东风"); // static void sleep(long millis) 使当前正在执行的线程停留(暂停执行)指定的毫秒数 // 在继承的Thread类中使用 // void join() 等待这个线程死亡 // void setDaemon(boolean on) 将此线程白哦极为守护线程,当运行的线程都是守护线程时,java虚拟机将会退出 m2.setDaemon(true); m3.setDaemon(true); m1.start(); try { m1.join(); } catch (InterruptedException e) { e.printStackTrace(); } m2.start(); m3.start(); } } -------------------------------------- package demo18; public class MyThread_04 extends Thread{ public MyThread_04() { } public MyThread_04(String name) { super(name); } @Override public void run() { for (int i = 0; i < 100; i++) { System.out.println(getName()+i+"号 发射"); try { sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } } } } ====================================== 火箭弹0号 发射 火箭弹1号 发射 火箭弹2号 发射 火箭弹3号 发射 火箭弹4号 发射 火箭弹5号 发射 火箭弹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号 发射 火箭弹51号 发射 火箭弹52号 发射 火箭弹53号 发射 火箭弹54号 发射 火箭弹55号 发射 火箭弹56号 发射 火箭弹57号 发射 火箭弹58号 发射 火箭弹59号 发射 火箭弹60号 发射 火箭弹61号 发射 火箭弹62号 发射 火箭弹63号 发射 火箭弹64号 发射 火箭弹65号 发射 火箭弹66号 发射 火箭弹67号 发射 火箭弹68号 发射 火箭弹69号 发射 火箭弹70号 发射 火箭弹71号 发射 火箭弹72号 发射 火箭弹73号 发射 火箭弹74号 发射 火箭弹75号 发射 火箭弹76号 发射 火箭弹77号 发射 火箭弹78号 发射 火箭弹79号 发射 火箭弹80号 发射 火箭弹81号 发射 火箭弹82号 发射 火箭弹83号 发射 火箭弹84号 发射 火箭弹85号 发射 火箭弹86号 发射 火箭弹87号 发射 火箭弹88号 发射 火箭弹89号 发射 火箭弹90号 发射 火箭弹91号 发射 火箭弹92号 发射 火箭弹93号 发射 火箭弹94号 发射 火箭弹95号 发射 火箭弹96号 发射 火箭弹97号 发射 火箭弹98号 发射 火箭弹99号 发射 意大利炮0号 发射 东风0号 发射 Process finished with exit code 0
_实现Runnable接口的方式实现多线程
-
方式2:实现Runnable接口
- 定义一个类MyRunnable实现Runnable接口
- 在MyRunnable类中重写run()方法
- 创建MyRunnable类的对象
- 创建Thread类的对象,把MyRunnable对象作为构造方法参数
- 启动线程
-
package demo18; public class Thread_Demo_05 { public static void main(String[] args) { MyRunnable_01 r1 = new MyRunnable_01(); MyRunnable_01 r2 = new MyRunnable_01(); MyRunnable_01 r3 = new MyRunnable_01(); /* public Thread(Runnable target, String name) 分配一个新的Thread对象。 此构造具有相同的效果Thread (null, target, name) 。 参数: target - 启动此线程时调用其run方法的对象。 如果null ,则调用此线程的run方法。 */ Thread t1 = new Thread(r1, "火箭弹"); Thread t2 = new Thread(r2, "东风"); Thread t3 = new Thread(r3, "洲际导弹"); t1.start(); t2.start(); t3.start(); } } ------------------------------------------ package demo18; public class MyRunnable_01 implements Runnable { @Override public void run() { for (int i = 0; i < 100; i++) { System.out.println("第"+i+"号"+Thread.currentThread().getName() +"发射"); } } } ======================================== 第0号火箭弹发射 第1号火箭弹发射 第2号火箭弹发射 第3号火箭弹发射 第4号火箭弹发射 第5号火箭弹发射 第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号火箭弹发射 第0号东风发射 第51号火箭弹发射 第1号东风发射 第52号火箭弹发射 第53号火箭弹发射 第54号火箭弹发射 第55号火箭弹发射 第56号火箭弹发射 第57号火箭弹发射 第58号火箭弹发射 第59号火箭弹发射 第60号火箭弹发射 第61号火箭弹发射 第62号火箭弹发射 第63号火箭弹发射 第64号火箭弹发射 第65号火箭弹发射 第66号火箭弹发射 第67号火箭弹发射 第68号火箭弹发射 第69号火箭弹发射 第70号火箭弹发射 第71号火箭弹发射 第72号火箭弹发射 第73号火箭弹发射 第74号火箭弹发射 第75号火箭弹发射 第76号火箭弹发射 第2号东风发射 第77号火箭弹发射 第3号东风发射 第78号火箭弹发射 第79号火箭弹发射 第80号火箭弹发射 第81号火箭弹发射 第82号火箭弹发射 第83号火箭弹发射 第84号火箭弹发射 第85号火箭弹发射 第86号火箭弹发射 第87号火箭弹发射 第88号火箭弹发射 第89号火箭弹发射 第90号火箭弹发射 第91号火箭弹发射 第92号火箭弹发射 第93号火箭弹发射 第94号火箭弹发射 第95号火箭弹发射 第96号火箭弹发射 第97号火箭弹发射 第98号火箭弹发射 第99号火箭弹发射 第4号东风发射 第5号东风发射 第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号东风发射 第51号东风发射 第52号东风发射 第53号东风发射 第54号东风发射 第55号东风发射 第56号东风发射 第57号东风发射 第58号东风发射 第59号东风发射 第60号东风发射 第61号东风发射 第62号东风发射 第63号东风发射 第64号东风发射 第65号东风发射 第66号东风发射 第67号东风发射 第68号东风发射 第69号东风发射 第70号东风发射 第71号东风发射 第72号东风发射 第73号东风发射 第74号东风发射 第75号东风发射 第76号东风发射 第77号东风发射 第78号东风发射 第79号东风发射 第80号东风发射 第81号东风发射 第82号东风发射 第83号东风发射 第84号东风发射 第85号东风发射 第86号东风发射 第87号东风发射 第88号东风发射 第89号东风发射 第90号东风发射 第91号东风发射 第92号东风发射 第93号东风发射 第94号东风发射 第95号东风发射 第96号东风发射 第97号东风发射 第98号东风发射 第99号东风发射 第0号洲际导弹发射 第1号洲际导弹发射 第2号洲际导弹发射 第3号洲际导弹发射 第4号洲际导弹发射 第5号洲际导弹发射 第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号洲际导弹发射 第51号洲际导弹发射 第52号洲际导弹发射 第53号洲际导弹发射 第54号洲际导弹发射 第55号洲际导弹发射 第56号洲际导弹发射 第57号洲际导弹发射 第58号洲际导弹发射 第59号洲际导弹发射 第60号洲际导弹发射 第61号洲际导弹发射 第62号洲际导弹发射 第63号洲际导弹发射 第64号洲际导弹发射 第65号洲际导弹发射 第66号洲际导弹发射 第67号洲际导弹发射 第68号洲际导弹发射 第69号洲际导弹发射 第70号洲际导弹发射 第71号洲际导弹发射 第72号洲际导弹发射 第73号洲际导弹发射 第74号洲际导弹发射 第75号洲际导弹发射 第76号洲际导弹发射 第77号洲际导弹发射 第78号洲际导弹发射 第79号洲际导弹发射 第80号洲际导弹发射 第81号洲际导弹发射 第82号洲际导弹发射 第83号洲际导弹发射 第84号洲际导弹发射 第85号洲际导弹发射 第86号洲际导弹发射 第87号洲际导弹发射 第88号洲际导弹发射 第89号洲际导弹发射 第90号洲际导弹发射 第91号洲际导弹发射 第92号洲际导弹发射 第93号洲际导弹发射 第94号洲际导弹发射 第95号洲际导弹发射 第96号洲际导弹发射 第97号洲际导弹发射 第98号洲际导弹发射 第99号洲际导弹发射 Process finished with exit code 0
_卖票
-
需求:某电影院目前正在上映国产大片,共有100张票,而它有3个窗口卖票,请设计一个模拟程序模拟该电影院卖票
-
思路:
- 定义一个类SellTicket实现Runnable接口,里面定义一个成员变量:priviate int tickets = 100;
- 在Sellticket类中重写run()方法实现卖票,代码步骤如下:
- 判断票数大于0,就卖票,并告知时哪个窗口卖的
- 卖了票之后,总票数减1
- 票没有了,也有可能有人来问,所以这里用死循环让卖票的动作一直持续下去
- 定义一个SellTicketDemo,里面与偶mian方法,代码步骤如下:
- 创建一个SellTicket类的对象
- 创建3个Thread类的对象,把SellTicket对象作为构造方法的参数,并给出对应的窗口名称
- 启动线程
-
package demo19; public class Thread_Demo_01 { public static void main(String[] args) { /* 1. 需求:某电影院目前正在上映国产大片,共有100张票,而它有3个窗口卖票,请设计一个模拟程序模拟该电影院卖票 2. 思路: - 定义一个类SellTicket实现Runnable接口,里面定义一个成员变量:priviate int tickets = 100; - 在SellTicket类中重写run()方法实现卖票,代码步骤如下: - 判断票数大于0,就卖票,并告知时哪个窗口卖的 - 卖了票之后,总票数减1 - 票没有了,也有可能有人来问,所以这里用死循环让卖票的动作一直持续下去 - 定义一个SellTicketDemo,里面与偶mian方法,代码步骤如下: - 创建一个SellTicket类的对象 - 创建3个Thread类的对象,把SellTicket对象作为构造方法的参数,并给出对应的窗口名称 - 启动线程 */ SellTicket st1 = new SellTicket(); SellTicket st2 = new SellTicket(); SellTicket st3 = new SellTicket(); Thread t1 = new Thread(st1, "窗口1"); Thread t2 = new Thread(st2, "窗口2"); Thread t3 = new Thread(st3, "窗口3"); t1.start(); t2.start(); t3.start(); } } ----------------------------------- package demo19; public class SellTicket implements Runnable { private int tickets = 200; @Override public void run() { while (true) { if (tickets>0) { System.out.println(Thread.currentThread().getName() + "正在出售第" + tickets + "张票"); tickets--; // try { // Thread.sleep(100); // } catch (InterruptedException e) { // e.printStackTrace(); // } } } } } ======================================== 窗口1正在出售第200张票 窗口2正在出售第200张票 窗口2正在出售第198张票 窗口2正在出售第197张票 窗口2正在出售第196张票 窗口2正在出售第195张票 窗口2正在出售第194张票 窗口2正在出售第193张票 窗口2正在出售第192张票 窗口2正在出售第191张票 窗口2正在出售第190张票 窗口2正在出售第189张票 窗口2正在出售第188张票 窗口2正在出售第187张票 窗口2正在出售第186张票 窗口2正在出售第185张票 窗口2正在出售第184张票 窗口1正在出售第191张票 窗口1正在出售第183张票 窗口1正在出售第182张票 窗口1正在出售第181张票 窗口1正在出售第180张票 窗口1正在出售第179张票 窗口1正在出售第178张票 窗口1正在出售第177张票 窗口1正在出售第176张票 窗口1正在出售第175张票 窗口1正在出售第174张票 窗口1正在出售第173张票 窗口1正在出售第172张票 窗口1正在出售第171张票 窗口1正在出售第170张票 窗口1正在出售第169张票 窗口1正在出售第168张票 窗口1正在出售第167张票 窗口1正在出售第166张票 窗口1正在出售第165张票 窗口1正在出售第164张票 窗口1正在出售第163张票 窗口1正在出售第162张票 窗口1正在出售第161张票 窗口1正在出售第160张票 窗口1正在出售第159张票 窗口1正在出售第158张票 窗口1正在出售第157张票 窗口1正在出售第156张票 窗口1正在出售第155张票 窗口1正在出售第154张票 窗口1正在出售第153张票 窗口1正在出售第152张票 窗口1正在出售第151张票 窗口1正在出售第150张票 窗口1正在出售第148张票 窗口1正在出售第147张票 窗口1正在出售第146张票 窗口1正在出售第145张票 窗口1正在出售第144张票 窗口1正在出售第143张票 窗口1正在出售第142张票 窗口1正在出售第141张票 窗口1正在出售第140张票 窗口1正在出售第139张票 窗口1正在出售第138张票 窗口1正在出售第137张票 窗口1正在出售第136张票 窗口1正在出售第135张票 窗口2正在出售第148张票 窗口1正在出售第134张票 窗口2正在出售第133张票 窗口1正在出售第132张票 窗口2正在出售第131张票 窗口1正在出售第130张票 窗口2正在出售第129张票 窗口1正在出售第128张票 窗口2正在出售第127张票 窗口1正在出售第126张票 窗口2正在出售第125张票 窗口1正在出售第124张票 窗口2正在出售第123张票 窗口1正在出售第122张票 窗口2正在出售第121张票 窗口2正在出售第119张票 窗口2正在出售第118张票 窗口2正在出售第117张票 窗口2正在出售第116张票 窗口3正在出售第116张票 窗口3正在出售第114张票 窗口3正在出售第113张票 窗口3正在出售第112张票 窗口3正在出售第111张票 窗口3正在出售第110张票 窗口3正在出售第109张票 窗口3正在出售第108张票 窗口3正在出售第107张票 窗口3正在出售第106张票 窗口3正在出售第105张票 窗口3正在出售第104张票 窗口3正在出售第103张票 窗口3正在出售第102张票 窗口3正在出售第101张票 窗口3正在出售第100张票 窗口3正在出售第99张票 窗口3正在出售第98张票 窗口3正在出售第97张票 窗口3正在出售第96张票 窗口3正在出售第95张票 窗口1正在出售第120张票 窗口1正在出售第93张票 窗口1正在出售第92张票 窗口1正在出售第91张票 窗口1正在出售第90张票 窗口1正在出售第89张票 窗口1正在出售第88张票 窗口1正在出售第87张票 窗口3正在出售第94张票 窗口3正在出售第85张票 窗口3正在出售第84张票 窗口3正在出售第83张票 窗口3正在出售第82张票 窗口3正在出售第81张票 窗口3正在出售第80张票 窗口3正在出售第79张票 窗口3正在出售第78张票 窗口3正在出售第77张票 窗口3正在出售第76张票 窗口3正在出售第75张票 窗口3正在出售第74张票 窗口3正在出售第73张票 窗口3正在出售第72张票 窗口3正在出售第71张票 窗口3正在出售第70张票 窗口3正在出售第69张票 窗口3正在出售第68张票 窗口3正在出售第67张票 窗口3正在出售第66张票 窗口3正在出售第65张票 窗口3正在出售第64张票 窗口3正在出售第63张票 窗口3正在出售第62张票 窗口3正在出售第61张票 窗口3正在出售第60张票 窗口3正在出售第59张票 窗口3正在出售第58张票 窗口3正在出售第57张票 窗口3正在出售第56张票 窗口3正在出售第55张票 窗口3正在出售第54张票 窗口3正在出售第53张票 窗口3正在出售第52张票 窗口3正在出售第51张票 窗口3正在出售第50张票 窗口3正在出售第49张票 窗口3正在出售第48张票 窗口3正在出售第47张票 窗口3正在出售第46张票 窗口2正在出售第115张票 窗口2正在出售第44张票 窗口2正在出售第43张票 窗口2正在出售第42张票 窗口2正在出售第41张票 窗口2正在出售第40张票 窗口2正在出售第39张票 窗口2正在出售第38张票 窗口2正在出售第37张票 窗口2正在出售第36张票 窗口3正在出售第45张票 窗口1正在出售第86张票 窗口3正在出售第34张票 窗口2正在出售第35张票 窗口3正在出售第32张票 窗口1正在出售第33张票 窗口3正在出售第30张票 窗口2正在出售第31张票 窗口3正在出售第28张票 窗口1正在出售第29张票 窗口3正在出售第26张票 窗口2正在出售第27张票 窗口3正在出售第24张票 窗口1正在出售第25张票 窗口1正在出售第21张票 窗口1正在出售第20张票 窗口1正在出售第19张票 窗口1正在出售第18张票 窗口1正在出售第17张票 窗口1正在出售第16张票 窗口1正在出售第15张票 窗口3正在出售第22张票 窗口2正在出售第23张票 窗口3正在出售第13张票 窗口1正在出售第14张票 窗口3正在出售第11张票 窗口2正在出售第12张票 窗口3正在出售第9张票 窗口1正在出售第10张票 窗口3正在出售第7张票 窗口2正在出售第8张票 窗口2正在出售第4张票 窗口2正在出售第3张票 窗口3正在出售第5张票 窗口3正在出售第1张票 窗口1正在出售第6张票 窗口2正在出售第2张票 Process finished with exit code 130