java thread类都是native方法实现的,所以没有用平台无关的方法实现,怎么实现的呢?

线程的实现:

第一种:使用内核线程实现。

内核线程就是直接使用操作系统内核支持的线程,由内核完成切换。

程序一般不会直接使用内核线程,而是使用内核线程的一种高级接口——轻量级进程,即通常意义上的线程。每个轻量级线程都要有一个内核线程支持,所以会消耗一定的内核资源。

而且因为是基于内核实现的,所以线程的操作需要系统调用,代价较高

2.用户线程

一般意义上来说只要不是内核线程都是用户线程,但是轻量级线程实现是建立在内核线程上的,因此效率会受到限制。

侠义上用户线程是指完全是建立在用户空间的线程库上,内核不能感知线程的存在,用户线程的建立,同步,销毁完全在用户态完成,不需要内核的帮忙。

3.混合实现

内核线程和用户线程一起使用的实现,在这种混合模式下。既存在用户线程,也存在轻量级进程。用户线程还是建立在用户空间内,因此用户线程的创建,切换等依然廉价。而操作系统提供的轻量级进程则作为用户线程和内核线程之间的桥梁。

java线程的实现

不同的操作系统,线程模型是不一样的,对于sun jdk来说,windows和linux都是使用的一对一的线程模型,即第一种,使用内核线程实现的

java线程调度

java线程是抢占式的,java线程由系统来分配执行时间。java线程的优先级不太管用,因为java线程是映射到系统的原生线程上实

现的,所以调度还是由系统说的算

java线程的理解的更多相关文章

  1. java线程安全理解

    java线程安全理解 如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码.如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的. ...

  2. Java线程池理解及用法

    前言 多线程的异步执行方式,虽然能够最大限度发挥多核计算机的计算能力,但是如果不加控制,反而会对系统造成负担.线程本身也要占用内存空间,大量的线程会占用内存资源并且可能会导致Out of Memory ...

  3. Java线程中断理解(interrupte)

    Java线程之中,一个线程的生命周期分为:初始.就绪.运行.阻塞以及结束.当然,其中也可以有四种状态,初始.就绪.运行以及结束. 一般而言,可能有三种原因引起阻塞:等待阻塞.同步阻塞以及其他阻塞(睡眠 ...

  4. 【转】关于Java的Daemon线程的理解

    原文地址:http://www.cnblogs.com/ChrisWang/archive/2009/11/28/1612815.html 关于Java的Daemon线程的理解 网上对Java的Dae ...

  5. Java线程锁&分布式锁的理解及应用

    了解Java线程锁之前,先理解线程和进程的定义.进程是操作系统分配资源(CPU)的基本单位,线程是CPU执行的基本单位,一个进程可拥有多个线程,同进程间的多个线程共享分配给进程的资源.比如启动JVM时 ...

  6. 深入理解Java线程池:ScheduledThreadPoolExecutor

    介绍 自JDK1.5开始,JDK提供了ScheduledThreadPoolExecutor类来支持周期性任务的调度.在这之前的实现需要依靠Timer和TimerTask或者其它第三方工具来完成.但T ...

  7. Java线程工作内存与主内存变量交换过程及volatile关键字理解

    Java线程工作内存与主内存变量交换过程及volatile关键字理解 1. Java内存模型规定在多线程情况下,线程操作主内存变量,需要通过线程独有的工作内存拷贝主内存变量副本来进行.此处的所谓内存模 ...

  8. 2018.7.26 进程和线程的区别 &&你对 Java平台的理解

    进程和线程的区别 1.定义 进程:具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位. 线程:进程的一个实体,是CPU调度和分派的基本单位,它是比进程更 ...

  9. 干货,阿里P8浅谈对java线程池的理解(面试必备)

    线程池的概念 线程池由任务队列和工作线程组成,它可以重用线程来避免线程创建的开销,在任务过多时通过排队避免创建过多线程来减少系统资源消耗和竞争,确保任务有序完成:ThreadPoolExecutor ...

随机推荐

  1. 安装初始化mysql后,默认几个库介绍

    背景介绍:  当我们安装初始化mysql后,默认建了几个数据库,那么这些数据库有什么作用呢?mysql> show databases;+--------------------+| Datab ...

  2. SSD(Single Shot MultiBox Detector)的安装配置和运行

    下文图文介绍转自watersink的博文SSD(Single Shot MultiBox Detector)不得不说的那些事. 该方法出自2016年的一篇ECCV的oral paper,SSD: Si ...

  3. 全面理解Javascript中Function对象的属性和方法

    http://www.cnblogs.com/liontone/p/3970420.html 函数是 JavaScript 中的基本数据类型,在函数这个对象上定义了一些属性和方法,下面我们逐一来介绍这 ...

  4. [Java] - 格式字符串替换方法

    Java 字符串格式替换方法有两种,一种是使用String.format(...),另一种是使用MessageFormat.format(...) 如下: import java.text.Messa ...

  5. [转]Dll注入经典方法完整版

    Pnig0s1992:算是复习了,最经典的教科书式的Dll注入. 总结一下基本的注入过程,分注入和卸载 注入Dll: 1,OpenProcess获得要注入进程的句柄 2,VirtualAllocEx在 ...

  6. EM算法 The EM Algorithm

    (EM算法)The EM Algorithm http://www.cnblogs.com/jerrylead/archive/2011/04/06/2006936.html EM算法原理 http: ...

  7. Struts2实现简单的在线人数统计

    用Strust2框架的知识简单实现一个统计在线人数的问题. 1 搭建开发环境:(配置文件,jar包等问题) 2 index.jsp <%@ page language="java&qu ...

  8. 报错:HTTP Status 404 - There is no Action mapped for namespace [/] and action name [product-save] associated with context path [/20161101-struts2-2].

    运行:index.jsp---->input.jsp----->details.jsp,但是在input.jsp到details.jsp的时候报错误. 异常如下: 严重: Could no ...

  9. PowerDesigner里数据表里AUTO_INCREMENT(自增)的设置

    使用流程: File->New Model->Model types->Physical Data Model->Physical Diagram 在下边DBMS里选择:MyS ...

  10. 实用的VS工具

    工具 1.Visual Studio Visual Studio Productivity Power tool:Visual Studio专业版(及以上)的扩展,具有丰富的功能,如快速查找,导航解决 ...