大家好,欢迎来到IT知识分享网。
文章目录
- 1、什么是线程
 - 2、线程的组成
 - 3、线程的特点
 - 4、线程的创建方式
 - 5、获取和设置线程的名称
 - 6、示例
- 使用线程Thread类实现4个窗口各卖100张票
 - 实现四个窗口共卖100张票
 
 - 7、线程的状态
 - 8、 常见方法
 - 9、线程的状态(等待)
 
1、什么是线程
2、线程的组成
3)线程的逻辑代码.
3、线程的特点
1. 线程抢占式执行
2. 在单核CPU中,宏观上同时执行,微观上顺序执行
4、线程的创建方式
5、获取和设置线程的名称
获取线程ID和线程名称
修改线程名称
6、示例
使用线程Thread类实现4个窗口各卖100张票
package com.zsb.demo01; public class MyThread extends Thread{ @Override public void run(){ for (int i=99;i>=0;i--){ System.out.println(Thread.currentThread().getName()+"卖票1张===还有"+i+"张"); } } } 
package com.zsb.demo01; public class Test02 { public static void main(String[] args) { MyThread m1 = new MyThread(); m1.setName("窗口1"); MyThread m2 = new MyThread(); m2.setName("窗口2"); MyThread m3 = new MyThread(); m3.setName("窗口3"); MyThread m4 = new MyThread(); m4.setName("窗口4"); m1.start(); m2.start(); m3.start(); m4.start(); // // for (int i=1;i<10;i++){ // System.out.println("45454========"+i); // } } } 
实现四个窗口共卖100张票
package com.zsb.demo15; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; public class Test { public static void main(String[] args){ //创建了四个窗口 TicketSell r1 = new TicketSell(); Thread t1 = new Thread(r1); Thread t2 = new Thread(r1); Thread t3 = new Thread(r1); Thread t4 = new Thread(r1); t1.setName("窗口1"); t2.setName("窗口2"); t3.setName("窗口3"); t4.setName("窗口4"); t1.start(); t2.start(); t3.start(); t4.start(); } static class TicketSell implements Runnable { //定义总票数为100张 private int ticket = 100; Lock s = new ReentrantLock(); @Override public void run() { while (true) { try { s.lock(); if (ticket > 0) { try { Thread.sleep(100);//等待一定的时间 } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(Thread.currentThread().getName() + "卖出 1 张票," + " 还剩" + (ticket - 1) + " 张票!"); ticket--; } else { System.out.println(Thread.currentThread().getName() + "票已售完"); break; } } finally { s.unlock(); } } } } } 
7、线程的状态
8、 常见方法
package com.zsb.demo04; public class TestSleep { public static void main(String[] args) { T t = new T(); t.start(); for (int i = 0; i < 20; i++) { System.out.println("main===="+i); } } } class T extends Thread{ @Override public void run(){ for (int i = 0; i < 20; i++) { try { Thread.sleep(100); }catch (InterruptedException e){ e.printStackTrace(); } System.out.println("============="+i); } } }
package com.zsb.demo08; public class TestJoin { public static void main(String[] args) throws InterruptedException { T3 t3 = new T3(); t3.start(); //把t线程加入到当前得main线程中,直到t执行完毕后, main才会执行 t3.join(); for (int i = 0; i < 20; i++) { System.out.println("main________"+i); } } } class T3 extends Thread{ @Override public void run(){ for (int i = 0; i < 20; i++) { System.out.println("============="+i); } } }
package com.zsb.demo09; public class TestDaemon { public static void main(String[] args) { T4 t4 = new T4(); // 设置t4为守护线程,当前台线程都执行完毕后,守护线程也会自动结束 t4.setDaemon(true); t4.start(); for (int i = 0; i < 20; i++) { System.out.println("main________"+i); } } } class T4 extends Thread{ @Override public void run(){ for (int i = 0; i < 20; i++) { System.out.println(Thread.currentThread().getName()+"============="+i); } } }
9、线程的状态(等待)
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/120780.html
                



