多线程知识细节梳理

1.创建多线程2种方式
1.继承Thread
2.实现Runnable 接口
2.继承Thread用法
class MyThread extends Thread{
private int ticketsCount= 5;//一共5张火车票
private String name;// 窗口 也是线程名字

public MyThread(String name){
    this.name = name;
}

@Override
public void run() {
    while (ticketsCount > 0){
        ticketsCount--; //如果还有票 就卖掉一张
        System.out.println(name+"卖了1张票,剩余票数为:"+ticketsCount);
    }
}

}
public class TicketsThread {
public static void main(String[] args){
//创建3个线程 模拟三个窗口卖票
MyThread mt1 = new MyThread("窗口1");
MyThread mt2 = new MyThread("窗口2");
MyThread mt3 = new MyThread("窗口3");

    //启动这三个线程 ,也即是窗口 ,开始卖票
    mt1.start();
    mt2.start();
    mt3.start();
}

}

3.实现Runnable用法
class MyThreadRunnable implements Runnable {
private int ticketsCount = 5 ;//一共5张火车票
@Override
public void run() {
while (ticketsCount > 0){
ticketsCount--;//如果还有票 就卖掉一张
System.out.println(Thread.currentThread().getName()+"卖了1张票,剩余票数为:"+ticketsCount);
}
}
}

public class TicketsRunnable {
public static void main(String[] args){
MyThreadRunnable mt = new MyThreadRunnable();
//创建三个线程 来模拟 三个售票窗口
Thread th1 = new Thread(mt,"窗口1");
Thread th2 = new Thread(mt,"窗口2");
Thread th3 = new Thread(mt,"窗口3");

    //启动这三个线程 也即是三个窗口开始卖票
    th1.start();
    th2.start();
    th3.start();
    //线程生命周期 创建-就绪 -阻塞-运行状态-终止状态
}

}

4.生命周期流程图


image.png

知识细节:
当多线程创建 后执行start 就会进入就绪状态 不一定马上执行 主要看有没有cpu资源
如果有马上执行 就会进入运行状态 运行完成 就会进入终止状态
如果调用sleep 就会进入阻塞状态 让出cpu资源 让其他线程执行 如果sleep阻塞结束 该线程就会进入就绪状态 重新获取cpu资源

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Java多线程学习 [-] 一扩展javalangThread类 二实现javalangRunnable接口 三T...
    影驰阅读 3,018评论 1 18
  • 本文主要讲了java中多线程的使用方法、线程同步、线程数据传递、线程状态及相应的一些线程函数用法、概述等。 首先讲...
    李欣阳阅读 2,521评论 1 15
  • 进程和线程 进程 所有运行中的任务通常对应一个进程,当一个程序进入内存运行时,即变成一个进程.进程是处于运行过程中...
    胜浩_ae28阅读 5,186评论 0 23
  • 7月20日知识点 今天的主要内容——线程 线程线程的基本概念线程与进程的区别线程的两种创建方式(掌握)注意线程两种...
    须臾之北阅读 13,802评论 0 4
  • 宇宙能量无处不在,就看你自身自带的是什么能量。如果你是一个正能量的人,全身心每个细胞、夸克都充满正能量,当然你们吸...
    林卿怡阅读 491评论 0 1