线程

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;

 

    

原文地址:https://www.cnblogs.com/yikuan-919/p/11141098.html