Java领域中的线程机制-管程与线程
首先,管程(Monitor)就是一对monitorenter和monitorexit指令组成的一个对象监视器。任何线程想要访问该资源,就要排队进入监控范围。进入之后,接受检查,不符合条件,则要继续等待,直到被通知,然后继续进入监视器。
在Java中,每个加锁的对象都绑定着一个管程(监视器)。首先,线程访问加锁对象,就是去拥有一个监视器的过程,所有线程访问共享资源,都需要先拥有监视器。其次,监视器至少有两个等待队列:一个是进入监视器的等待队列,一个是条件变量对应的等待队列。最后,当监视器要求的条件满足后,位于条件变量下等待的线程需要重新排队,等待通知再进入监视器。
其次,线程(Thread)是进程(Process)中的运行单位,可以把线程看作轻量级的进程。
线程按照操作系统和应用程序两个层次来分类,主要分为 内核线程(Kernel Thread)和用户(应用线程,Applciation Thread)线程(User Thread) 。
在Java领域中,线程可以分为:Java应用程序层线程(Java Application Thread ),Java虚拟机层线程(Java JVM Thread )和操作系统层线程(OS Thread)。
其中,Java层到内层层的线程创建的大致流程:java.lang.Thread(Java应用程序层)—>Java Thread(JVM 层)->OS Thread(操作系统层)->pthread(根据操作系统的情况而定)->内核线程(Kernel Thread)。
另外,线程按照映射方式来看,主要可以分为:多对一映射(用户级方式),一对一映射(内核级方式) 和多对多映射(组合方式)3种方式。
Java 语言中线程共有六种状态,分别是:NEW(初始化状态)RUNNABLE(可运行 / 运行状态)BLOCKED(阻塞状态)WAITING(无时限等待)TIMED_WAITING(有时限等待)TERMINATED(终止状态)。
Java中实现线程的方式:继承 Thread 对象:extends Thread,实现 Runnable 接口(无返回值):implements Runnable ,实现Callable 接口(有返回值):implements Callable,基于线程池方式创建等。
常见线程的调度模型目前主要分为两种:(分时)协同式调度模型和抢占式调度模型,Java的线程调度也是使用抢占式调度模型,因此Java的线程都有优先级。
Java 线程的调度机制由 JVM 实现,Java定义了 Thread.MIN_PRIORITY、Thread.NORM PRIORITY和 Thread.MAXPRIORITY这3个常量,分别代表最小优先级值(1)、默认优先级值(5)和最大优先级值(10)。
综上所述,我想关于Java中的线程机制,看到这个地方,你一定乐然于胸,希望未来的我们更加优秀!更多关于“java培训”的问题,欢迎咨询千锋教育在线名师。千锋教育多年办学,课程大纲紧跟企业需求,更科学更严谨,每年培养泛IT人才近2万人。不论你是零基础还是想提升,都可以找到适合的班型,千锋教育随时欢迎你来试听。