线程
java线程的6中状态:
new
runable
blocked
waiting
timed_waiting
terminated
转换图:
操作系统层面的东西,操作系统中的进程:
什么是进程:
一个程序进入到内存中的过程,简称为进程!
官方解释:process,计算机中的程序关于某数据集合中的一次运行活动,是系统进行资源分配和调度的基本单位!
什么是进程状态:
一个进程是有生命周期的,整个生命周期我们可以称为一组状态:
new 新建态
ready 就绪态
running 运行态
waiting 阻塞态(有时多的时候,就会排成队列[先进先出FIFO])
termainted 终止态
JVM层面的线程:
各个线程状态发生的条件:
创建线程的方式一:
继承Thread类,重写Run方法,start方法开启线程;
创建线程的方式二:
实现Runable接口,重写Run方法,start方法开启线程;
线程安全问题:
当使用多个线程访问同一资源的时候,且多个线程对资源都有写对操作,就会出现线程安全问题;
要解决多线程并发访问一个资源对安全性问题,java提供了同步机制来解决:synchronized(同步代码块,同步方法,锁机制);
线程池:
Executor
线程池的缘由:
1.避免大量线程相互之间抢占资源而导致阻塞现象;
2.提升性能,避免线程大量创建销毁造成的开销;
Java通过Executors提供了四个静态方法创建线程池;
可以缓存的线程池:newCacheThreadPool;
创建一个定长的线程池,可控制线程最大并发数,超出的线程会在队列中等待;newFixedThreadPool;
创建一个定长的线程池,支持定时及周期性任务执行,newScheduledThreadPool;
创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO、LIFO、优先级)执行,newSingleThreadExecutor;