当前位置:知之问问>百科知识>java 多线程的并发到底是什么混滑基势谁意思?

java 多线程的并发到底是什么混滑基势谁意思?

2023-12-31 12:48:24 编辑:join 浏览量:607

问题补充说明:是多个线程使用同一个已经new好的业务对象?还是多个线程使用相同业务的不同对象?

java 多线程的并发到底是什么混滑基势谁意思?

一、多线程

1、操作系统有两个容易混淆的概念,进程和线程。

来自进程:一个计算机套饭权乱程序的运行实例,包含了需要执行360问答的指令;有自己的独立地址空间,包含程序内容和数据;不同进程的地址空间是互相隔离的;进程拥有各种资源和状态信息,包括打开的文件、子进程和信号处理。

线程:表示程序的执行流程,是CPU调度执行的基本单位;线程有自己的程序计数器、寄存器、堆栈和帧。晚买呢德翻武杀星同一进程中的线程共用相同的地址空间,同时共享进进程锁拥有的内存和其他资源。

2、Java标准库提供了进程和线程相关的API,进程主要包括表示进程的java.lang.P树东界论刚远科rocess类和创帮孩省心无持充倍几建进程的java.lang.ProcessBuilder类;

表示线程的是j顾执客艺ava.lang.Thread类,在虚拟机启动之后破装乎重范金滑,通常只有Java类的main方法这个普通线程运行,运行时可以创建和启动新的线程;还有一类守护线程(damonthread),重先守护线程在后台运行,提供程序运行时所需的服务。当虚拟机中运行的所有线程都是守护线程时,虚拟机终止二固运行。

3、线程间的可见性:一个线程对进程中共享的数据植精架编获绿罗的修改,是否对另一个线程可见

可见性问题:

a、CPU采用时间片轮转等不同算法来对线程进行调度

[java]viewplaincopy

publicclassIdGenerator{

privateintvalue=0;

publicintg委一状夫械etNext(){

returnvalue++;

}

}

对于IdGen药般员站兰头封混操县erator的getNext()方法,在多线程下不能保证返回值是不重复的:各个线程种致普协之间相互竞争CPU时间来获取运行机会,CPU切换可能发生在执行间隙。

以上代码getNext()的指令序列:CP哥占压维蒸U切换可能发生在7条指令之间,多个getNext的指令交织在一起。

标签:多线程,java,混滑

版权声明:文章由 知之问问 整理收集,来源于互联网或者用户投稿,如有侵权,请联系我们,我们会立即处理。如转载请保留本文链接:https://www.zhzhwenwen.com/article/269913.html
热门文章