首页 > 编程语言 >1.并发编程(上)

1.并发编程(上)

时间:2023-12-12 17:23:38浏览次数:32  
标签:Java 操作系统 编程 用户 并发 线程 内核 进程

1.何为进程和线程?

 1.1 何为进程?

  进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程序即是一个进程从创建运行消亡的过程。在Java中,我们启动main函数是启动类JVM的进程,其中main函数所在的线程就是该进程的主线程

1.2 何为线程?

  线程是一个比进程更小的执行单位一个进程在其执行的过程中可以产生多个线程与进程不同的同类的多个线程共享进程方法区资源,但每个线程有自己程序计数器虚拟机栈本地方法栈,所以系统在产生一个线程或各个线程之间作切换工作时,负担要比进程小得多,因此,线程也被称为轻量级进程

注意一个Java程序的运行时main线程与其他多个线程的=同时运行

2. Java线程与操作系统的线程有啥区别?   在Java1.2,Java是基于绿色线程(GreenThread)的,它是一种用户级线程由用户空间管理和调度的线程,运行在用户空间,专门给应用程序使用)。JVM自己模拟多线程的运行,不依靠操作系统。在JDK1.2之后,JVM直接使用操作系统原生的内核线程(由操作系统内核管理和调度的线程,运行在内核态,只有内核程序才可访问)实现Java线程,由操作系统内核进行线程的调度和管理现在的Java线程本质是操作系统的线程。   现成模型是用户县城与内个线程的关联方式,常见线程模型有:

   在Windows和Linux环境中,采用的线程模型是一对一的现成模型,即一个用户线程对应一个系统内核线程。

   

参考链接

Java并发常见面试题总结(上) | JavaGuide(Java面试 + 学习指南)

标签:Java,操作系统,编程,用户,并发,线程,内核,进程
From: https://www.cnblogs.com/kzf-99/p/17896956.html

相关文章

  • 【并发编程】(二)锁与并发
    并发编程是编程中重要的一环,在特定的场景下,熟悉并发知识并且掌握并发编程显得尤为重要在本篇开篇前针对几个知识点进行说明,虽然有些组件不是位于juc下并且它本身是无锁实现的,但是它却能解决并发相关的问题ThreadLocal的原理ThreadLocal应该是java工程师很熟悉的一个组......
  • 实验6 c语言结构体、枚举应用编程
    实验任务4程序源码1#include<stdio.h>2#defineN1034typedefstruct{5charisbn[20];//isbn号6charname[80];//书名7charauthor[80];//作者8doublesales_price;//售价9intsales_......
  • CodeGeeX智能编程
    一、写在前面大家遇到代码不会的问题,本能的就会去求助chatGPT,但是没有梯子的话,chatGPT是不是也帮不上忙了?秉着白嫖的精神,分享给大家一款非常牛的插件CodeGeex。二、CodeGreex简介CodeGreex支持多种主流IDE,如VSCode、IntelliJIEAD、PyCharm、vim等,同时支持Python、java、C++/C......
  • 高并发情况下的漏桶算法(javascript版)
    classLeakyBucket{//高并发情况下的漏桶算法 constructor(capacity,leakRate){//创建一个容量为capacity,每秒漏水量为leakRate的漏桶 this.capacity=capacity; this.leakRate=leakRate; this.water=0; this.lastLeakTime=Date.now(); ......
  • 实验6 C语言结构体、枚举应用编程
    一、实验目的二、实验准备三、实验内容四、实验结果1.实验任务4源代码:1#include<stdio.h>2#defineN1034typedefstruct{5charisbn[20];//isbn号6charname[80];//书名7charauthor[80];//作者8......
  • C++基础 -4- C/C++混合编程
    ———————C/C++混合编程———————......
  • Java多线程编程
    本文中简单介绍一些java多线程相关的内容1.多线程基础Java通过java.lang.Thread类和java.util.concurrent包提供了多线程支持。一个线程可以通过继承Thread类或实现Runnable接口来创建。classMyThreadextendsThread{publicvoidrun(){//线程执行的代码}......
  • 实验6 C语言结构体,枚举应用编程(附实验5 C语言指针应用编程)
    实验6一,实验目的二,实验准备三,实验内容1,实验任务1task1.c1#include<stdio.h>2#include<string.h>3#defineN3//运行程序输入测试时,可以把这个数组改小一些输入测试45typedefstructstudent{6intid;//学号7......
  • 实验6 C语言结构体、枚举应用编程
    四、实验结论4.实验任务4task4.c1#include<stdio.h>2#defineN1034typedefstruct{5charisbn[20];//isbn号6charname[80];//书名7charauthor[80];//作者8doublesales_price;//售价9......
  • Java第七课_面向对象编程
    1.面向对象的编程对象publicclassPractice01{publicstaticvoidmain(String[]args){/*面向对象的编程,将一切事项都视为对象.对象用类来描述,过程在类里实现.使用时只需要调用类,不需要再考虑如何实现.将对象的共同特征进行......