java在云原生时代的痛点是什么

java在云原生时代的痛点是什么java在云原生时代的痛点是什么java在云原生时代的痛点java在云原生时代的痛点是什么是什么

Java在云原生时代会面临以下痛点:

部署和扩展的困难:在云原生环境中,应用需要快速部署、扩展和更新,而Java应用通常需要在虚拟机中运行,这可能导致部署和扩展时的延迟,管理成本也较高。

内存占用高:Java应用程序在运行时需要占用较高的内存,这会导致运行Java应用程序的虚拟机需要占用较多的资源,从而增加了与云原生环境的集成难度和成本。

限制容器化:使用容器化部署Java应用程序时,需要在容器中运行Java虚拟机。但Java虚拟机的特性和限制可能会影响容器的使用和性能表现。

性能问题:Java虚拟机会对应用程序的性能产生一定的影响,这可能导致在云原生环境中的应用性能不如预期。

解决这些痛点的方法包括优化Java应用程序的配置和部署方式,采用轻量级的Java框架,使用云原生技术(如Kubernetes)等。

  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7536561
  • 你也可以参考下这篇文章:java的编译模式:看java是如何将java代码转换为机器码运行的
  • 你还可以看下java参考手册中的 java-学习Java语言 - 描述Java编程语言的基本概念和特点的课程。-包是Java编程语言的一个特点,它帮助你组织和构建你的类以及它们之间的关系。-创建和使用软件包
  • 除此之外, 这篇博客: Java线程池以及阿里为什么不推荐使用Java自带的线程池和解决方法中的 原生创建线程池 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 万剑归宗,剑来。所有创建线程池的方法中都调用了 ThreadPoolExecutor 方法,一共有四个构造方法,只有参数不同。

    public ThreadPoolExecutor(int corePoolSize,
                                  int maximumPoolSize,
                                  long keepAliveTime,
                                  TimeUnit unit,
                                  BlockingQueue<Runnable> workQueue)
    
    public ThreadPoolExecutor(int corePoolSize,
                                  int maximumPoolSize,
                                  long keepAliveTime,
                                  TimeUnit unit,
                                  BlockingQueue<Runnable> workQueue,
                                  ThreadFactory threadFactory)
    
    public ThreadPoolExecutor(int corePoolSize,
                                  int maximumPoolSize,
                                  long keepAliveTime,
                                  TimeUnit unit,
                                  BlockingQueue<Runnable> workQueue,
                                  RejectedExecutionHandler handler)
    
    public ThreadPoolExecutor(int corePoolSize,
                                  int maximumPoolSize,
                                  long keepAliveTime,
                                  TimeUnit unit,
                                  BlockingQueue<Runnable> workQueue,
                                  ThreadFactory threadFactory,
                                  RejectedExecutionHandler handler)

    第四个参数最多,下表格解释了每个参数分别代表的意思

    corePoolSize
    
    核心线程数
    maximumPoolSize
    最大线程数
    keepAliveTime
    空闲线程存活时间
    unit
    时间单位
    workQueue
    任务队列
    threadFactory
    线程工厂
    handler
    线程拒绝策略

    参数解释:

    corePoolSizemaximumPoolSizekeepAliveTimeunit
    102010TimeUnit.SECONDS

    前四个参数一块解释方便理解,假设赋值如上表格中的值,第一个参数10是核心线程数,而第二个参数最大线程数是20,此时会出现10个临时线程,第三个参数代表空闲临时线程可以存活的时间是10,第四个参数代表的是时间单位,表格中赋值为秒,则代表这10个临时线程在空闲状态下存活时间为10秒。下图中展示了10个核心线程和10个临时线程,核心线程的好处是只要线程池不关闭,核心线程就不会销毁。

    总结:一共有20个线程,10个核心线程,10个临时线程,设置空闲临时线程销毁时间为10,单位为秒,临时线程空闲10秒之后进行销毁,核心线程只有在线程池关闭的时候进行销毁。

     第五个参数 workQueue 任务队列,存放任务的容器,提交给线程池的任务都在队列中存放。

     第六个参数 threadFactory 线程工厂,线程创建的工厂,此处可以选择自定义线程工厂,也可以使用默认的。

    最后一个参数 handler 线程拒绝策略,顾名思义,拒绝线程访问,它一共有四种拒绝策略。

  • 您还可以看一下 银文杰老师的小白Java入门系列:入门第一课【你的第一个Java程序】课程中的 Java中的取余和取模运算小节, 巩固相关知识点