基本数据类型包装类、线程相关基础概念、线程生命周期、阻塞状态原因、创建线程、线程池、结束线程

包装器的缓存:Boolean(全)  Byte(全) 

                        Character(0<=127) Short(-128~127) Long(-128~127)Integer(-128~127)

                        Float(无) Double(无)

                缓存的数据会被缓存进常量池中,导致相同的值的包装类地址相同

自动装箱:value of()         自动拆箱:XXvalue()

       

int i=Integer.parseInt("123");// String->int 
Integer i=new Integer(100); Integer i=Integer.valueOf(100);//int->Integer
int i=a.intValue();//Integer->int

继承关系

CPU:中央处理器,负责数据计算、执行指令集、存储介质间数据转移等

CPU线程:厂商规定的单位,一般表示虚拟核心状态下可并行的最大值

分时操作系统:给CPU分配任务并且控制CPU在规定时间内处理进程,超时释放进程的操作系统

CPU时间片:CPU处理进程的周期,时间到则释放,由操作系统控制

任务队列:操作系统将待处理的线程任务放到同一个队列中,参考用户标记的优先级决定队列的顺序将队列中的线程任务分配给CPU执行

进程:系统进行资源分配和调度的基本单位,是操作系统结构的基础

线程:是操作系统能够进行运算调度的最小单位,被包含于进程之中

并发:单核时期多任务解决方案,宏观上看起来多个任务“同时”执行

并行:多核心下,调用最多的算力,完成任务。多核心同时完成内容,可以各自完成互不影响

 线程的生命周期:1.新建(创建Java线程对象)

                                2.就绪(将线程任务添加到任务队列)

                                3.运行(操作系统分配CPU执行线程任务)

                                4.阻塞[释放资源|不释放资源](CPU间争抢资源)

                                5.销毁(线程任务执行完,离开队列)

阻塞状态的原因:1.线程调用了阻塞式IO方法

                             2.线程调用了sleep()方法主动放弃占用的处理器资源

                            3.线程同步

                            4.线程调用wait()方法,等待某一通知

创建线程的4种途径:1.继承Thread类,重写run()方法,调用实例的start()方法

                                2.实现Runnable接口,重写run()方法,根据实例创建Thread对象,thread.start()开启        Runnable接口是函数式接口 支持使用方法引用以及lambda表达式

                                3.实现callable接口,重写call()方法,根据实例创建Future Task 对象start运行get结果 callable也是函数式接口

                                4.Executor.class

线程池的使用:

//1.创建线程池管理对象
ExecutorService e=Executors.newCachedThreadPool();
//2.创建Runnable或Callable实现类对象
Runnable r=new Runnable(){
    public void run(){}
};
Callable c=new Callable(){
    public Object call()throws Exception{}
};
//3.提交给线程池
e.excuter(r);  Future f=e.submit();
//4.获取返回值
f.get();


f.get(3,TimeUnit.SECONDS);//线程超过3s结束线程

结束线程:强制结束 Thread.stop();

                   自结束    预留一个变量存储线程的运行状态 

                public static volatile boolean kaiguan=true;//使用volatile关键字,使变量不被缓存或输出语句 解决死亡列车问题

                void:interrupt()中断标记 static boolean:interrupted()返回是否有中断,并且清除标记

                boolean:isInterrupted() 返回是否有中断

                                

                 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值