什么是JUC?面试高频问点

1.什么是JUC
java.util.concurrent 也就是java工具类,在并发编程中用到
2.
业务:

普通的线程代码Thread,在企业中不会用到
Runnable: 没有返回值,效率相比于Callable相对较低!
所以企业中用的多的还是Callable中的锁
Lock:
在这里插入图片描述2.线程和进程
进程:一个程序,QQ.exe Music.exe 程序的集合
在这里插入图片描述一个进程往往可以包含多个线程,至少包含一个!

Java默认线程有几个线程?Main,GC.

线程:开了一个进程Typora,写字,写完后会自动保存(就是线程负责的)

Thread Runnable,Callable

java真的可以开启线程吗? 开不了的

在这里插入图片描述从源码角度分析:

public synchronized void start() {if (threadStatus != 0)throw new IllegalThreadStateException();

​    group.add(this);boolean started = false;try {start0();
​        started = true;} finally {try {if (!started) {
​                group.threadStartFailed(this);}} catch (Throwable ignore) {
​          
​        }}
}
//本地方法,底层的C++ java无法操作硬件
private native void start0();

3.并发和并行
并发编程:并行,并发

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

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

并行(多个人一起走)

  • CPU多核(多个线程同时执行):线程池
  • 在这里插入图片描述8核:cmd窗口输入systeminfo

可以通过代码查看

package com.qiu;

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

在这里插入图片描述
并发编程的本质:充分利用Cpu的资源

4.线程有几个状态:
源码分析:

public enum State {
    /**

   * Thread state for a thread which has not yet started.
     /
         NEW,新生


​    RUNNABLE,运行


​    BLOCKED,阻塞


​    WAITING,等待死死地等


​    TIMED_WAITING,超时等待,有限定一个时间


​    TERMINATED;终止
}


5.wait/sleep的区别

1.来自不同的类

wait->Object

sleep->Thread

企业当中,休眠 -->TimeUnit.DAYS.sleep(1);
在这里插入图片描述##### 2.关于锁的释放

wait会释放锁,sleep睡觉了,抱着锁睡觉,不会释放!

​ sleep方法调用之后,并没有释放锁。使得线程仍然可以同步控制。sleep不会让出系统资源;

而wait是进入线程等待池中等待,让出系统资源。

**我的理解:**wait释放锁,就是在等待的时候,把锁解开了,也就是让出了系统的资源.而sleep是在睡眠的时候不解开锁,不让出系统资源.进而别的程序也拿不到sleep所拥有的系统资源

3.使用的范围是不同的

wait:必须在同步代码块中,(等的时候有一个等的对象)

sleep:可以在任何地方睡

4.是否需要捕获异常

wait 不需要捕获异常

sleep需要捕获异常(可能会发生超时等待)
在这里插入图片描述

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值