首页 > 其他分享 >什么是JUC

什么是JUC

时间:2023-02-01 10:37:01浏览次数:99  
标签:JUC group 什么 线程 进程 sleep CPU wait


什么是JUC与线程和进程

一、什么是JUC

面试高频问 java util concurrent

什么是JUC_Java


java.util 工具包 包、分类

业务:普通的线程代码 Thread

Runnable: 没有返回值,效率相比Callable相对较低

什么是JUC_Java_02

二、线程和进程

线程和进程

线程、进程

进程是操作系统中的应用程序,是资源分配的基本单位。线程的用来执行具体的任务和功能,是cpu调度和分派的基本单位

进程:一个程序 qq.exe Music.exe 程序的集合;

一个进程往往可以包含多个线程,至少包含一个!

Java默认有两个线程。main、GC

线程:开了一个进程Typore,写字,自动保存(线程负责的)

对于Java而言:Thread、Runnable、Callable

Java真的可以开启线程么? 开不了

public synchronized void start() {
/**
* This method is not invoked for the main method thread or "system"
* group threads created/set up by the VM. Any new functionality added
* to this method in the future may have to also be added to the VM.
*
* A zero status value corresponds to state "NEW".
*/
if (threadStatus != 0)
throw new IllegalThreadStateException();

/* Notify the group that this thread is about to be started
* so that it can be added to the group's list of threads
* and the group's unstarted count can be decremented. */
group.add(this);

boolean started = false;
try {
start0();
started = true;
} finally {
try {
if (!started) {
group.threadStartFailed(this);
}
} catch (Throwable ignore) {
/* do nothing. If start0 threw a Throwable then
it will be passed up the call stack */
}
}
}
// 本地方法,底层的C++,Java,无法直接操作硬件
private native void start0();

并发、并行

并发:(多线程操作同一个资源)

  • CPU一核:模拟出来多条线程,天下武功,唯快不破,快速交替执行线程模拟

并行(多个人一起行走)

  • CPU多核:多个线程同时执行 最高性能 使用线程池操作
package com.can.demo01;

public class Test1 {
public static void main(String[] args) {
//获取cpu的核数
//CPU密集型,IO密集型
System.out.println(Runtime.getRuntime().availableProcessors());
}
}

并发编程的本质:充分利用CPU的资源

线程有几个状态 6个

public enum State {
// 新生
NEW,

// 运行
RUNNABLE,

// 阻塞
BLOCKED,

// 等待,死等
WAITING,

// 超时等待,超时不等
TIMED_WAITING,

// 终止
TERMINATED;
}

wait/sleep区别

1、来自不同的类

wait->Object

sleep->Thread

2、关于锁的释放

wait 会释放锁

sleep 不释放锁

3、使用的范围是不同的

wait 只能在同步代码块中使用

// 同步代码块
synchronized(obj){
//需要被同步的代码块
}

sleep 可以在任何地方睡

4、是否需要捕获异常

wait 不需要捕获异常 线程中断都会抛出异常

sleep 必须要捕获异常

什么是JUC_Java_03


标签:JUC,group,什么,线程,进程,sleep,CPU,wait
From: https://blog.51cto.com/u_15949251/6030893

相关文章

  • 云服务到底是什么?
    1虚拟化技术想要了解云服务,首先需要知道什么是虚拟化技术。在​​计算机​​​中,​​虚拟化​​​(​​英语​​​:Virtualization)是一种资源管理技术,是将计算机的各种实体资......
  • 转载 : Nginx 相关介绍(Nginx是什么?能干嘛?)
    Nginx的产生没有听过Nginx?那么一定听过它的"同行"Apache吧!Nginx同Apache一样都是一种WEB服务器,基于REST架构风格,以统一资源描述符(UniformResourcesIdentifier)URI......
  • 【Javaweb】什么是Listener监听器?
    1、Listener监听器它是Javaweb的三大组件之一。Javaweb的三大组件分别是:Servelt程序,Filter过滤器,Listener监听器。2、Listener它是JavaEE的规范,就是接口3、监听器的作用......
  • linux中memset作用,为什么要用memset
    光脚赤膊于2010-03-2814:36:08发表:“用处是大面积赋值,速度快!”所谓“初始化”,当然是指将你定义的变量或申请的空间赋予你所期望的值,例如语句inti=0;就表明定义了一......
  • spring是什么
    spring是一个容器框架,用来装javaBean(java对象),也是一个中间层框架(万能胶)可以起到连接作用,比如将mybatis、springMVC等粘合在一起运用,可以让我们的开发更快、更简洁。Sp......
  • 人最好的活法是什么样的?
    1,无房贷,无车贷,最好有两套房子,一套在市中心,   享受城市生活的便利,一套在郊区,结庐在人境,而无车马暄。2,有一部以上车子,可以是紧凑型的,保养得当,能开上二十年。3,男人平时......
  • 使用区块链交易所的好处是什么
    大家都知道,交易所其实就是用来交换数字货币的一个平台,它们部分平台可进行杠杆交易、量化交易、合约交易等操作。使用区块链交易所的好处是什么在区块链上交换的好处在于交易......
  • 什么是去中心化?去中心化系统的优势DAPP系统开发
    为了确保去中心化的容错才能,以下办法或许会有所协助:1.尽或许坚持多方竞争联系;2。升级协议的技术和知识一定要民主,让更多的人参与到一些显着不好的协议变更的研讨、评论和......
  • Java并发JUC——Future和Callable
    Runnable的缺陷不能返回一个返回值也不能抛出checkedExceptionCallable接口类似于Runnable,被其他线程执行的任务Callable接口中只有一个call()方法,和Runnable相比,......
  • JUnit介绍,JUnit是什么?
    JUnit是什么? JJUnit是用于编写和运行可重复的自动化测试的开源测试框架,这样可以保证我们的代码按预期工作。JUnit可广泛用于工业和作为支架(从命令行)或IDE(如Eclipse......