线 程

线 程线程的介绍 方法特点 线程

大家好,欢迎来到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

(0)
上一篇 2025-10-27 16:20
下一篇 2025-10-27 16:26

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信