进程,运行中的一个程序,换句话程序进内存即进程。
聊聊线程,从为啥要他,举个例子,某业务执行完耗时让客户没法等。这时线程就登场罗。分拨可异步处理业务环节,交由线程独自处理,跳出同步运行。
线程实现?三种,一类,两接口。接口是实现方式。真正是类。就算实现接口,还不是线程类,接口实现,交给线程类。接口包括可返回值callable,交给线程池,返回未来。
线程生命周期里面有初始化start,阻塞(有资格没资源),运行时run,休眠sleep(放弃资源和资格),等待wait(放弃资格和资源),死亡stop
多线程的核心是阻塞
cpu采用分时调度,抢占调度,卡机
运行代码,虚拟机找系统开执行路径,这路径就是线程。每个线程就是一个虚拟机到处理器路径。
start方法干啥?仅可启动一次,干了两件事,叫虚拟机起线程,虚拟机运行run方法。启动两次报异常状态。
不调start,调run,单线程执行方法。
方法栈,各线程独自占用内存,开独自的栈空间。互不干预。也就是随机结果的原因。
currentthread是获取当前全部线程
接口实现,面向接口,松耦合,多实现。共享变量,把接口实现给多个线程作为对象(线程主方法)
线程池,就是集合存了多个线程,比如hashmap存了多个thread
线程排查安全隐患,要排查没安规矩走。
死锁,多线程,同步的嵌套。单线程没死锁。
synchronized,对象锁,方法锁(this锁),静态方法锁(类.class);
jdk5引入lock=new reentrantlock()和unlock()对,记得unlock要在finally中执行替代synchronized。
等待唤醒,线程通信机制,wait和notify。基于锁的基础上实现。线程间默契配合。两个方法归超类object调用。
并发包集合类,redis队列,起到中间件,队列的作
回归教科书的生产者消费者,关键核心中间产品定义。