![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java学习
文章平均质量分 62
幻荼
这个作者很懒,什么都没留下…
展开
-
servlet和form和session表单实现最简单的登录跳转功能(详解,文末付源码)
servlet和form和session表单实现最简单的登录跳转功能原创 2023-07-07 13:14:38 · 1033 阅读 · 0 评论 -
CAS简介
简单来说就是进行原子性操作比如,我们可以将上面的加锁和解锁替换成CAS中的原子操作所谓CAS的原子操作类,指的是java.util.concurrent.atomic包下,一系列以Atomic开头的包装类。如AtomicBoolean,AtomicUInteger,AtomicLong。让我们用一用//将int count变为AtomicInteger count = new AtomicInteger()i < 10000;i++) {//使用原子性的++操作});i < 10000。原创 2023-06-23 15:20:39 · 415 阅读 · 0 评论 -
死锁的成因以及解决方案(简析)
如果是不可重入锁,那么我们在执行完输出语句"执行1"之后,因为锁是任然在do1手中,没有释放,那么我们是不能执行do2(),这个语句的。如果单个线程被连续加锁两次及以上,成为了不可重入锁,那么该线程就造成了死锁(一般的synchronized是可重入锁,不会造成死锁)4.循环等待.线程1 等待 线程2释放锁,线程2 要释放锁得等待线程3 来释放锁,线程3 释放锁得等待线程1 释放锁。3.请求和保持.有多把锁,线程1拿到锁A后,不想释放锁A,还想拿到一个锁B。1.互斥使用.锁A被线程1占用,线程2就用不了。原创 2023-06-23 13:15:57 · 772 阅读 · 0 评论 -
Java线程池小结
简单来说,就是在系统的内存里面开辟一个容器用来存放线程一旦线程结束之后,系统不会立刻回收销毁该线程,而是等他继续在容器里面如果有其他任务需要调用该线程,就直接从容器里面拿出来从而不必重新new和销毁线程。原创 2023-06-22 17:26:02 · 304 阅读 · 0 评论 -
Java线程的六种状态(付代码解释)
Java线程一共有六种状态,分别是新建状态(New)运行状态(Runnable)阻塞状态(Blocked)等待状态(Waiting)计时等待状态(Timed Waiting)终止状态(Terminated)原创 2023-06-21 19:33:49 · 1453 阅读 · 0 评论 -
Java中Thread 类的五种基本用法(简介)
这个时候就先打印了函数,五秒之后再打印线程里面的内容,这就是休眠sleep的用法!不就是我们在打断方法的时候用过的Thread.currentThread()吗。由于程序是并发运行的,但是运行线程的时候遇到了sleep,短暂休眠了5秒。就是自己设置一个变量,如果满足则线程继续执行,如果不满足则结束。5.使用匿名内部类,实现Runnable,重写run。4.使用匿名内部类,继承Thread,重写run。这我的这篇博客详细介绍了这五种方法的代码和实现。只要调用了join,那么后面的代码就一定后执行。原创 2023-06-21 12:53:50 · 1630 阅读 · 0 评论 -
Java创建多线程的五种写法
其实就是在Thread里面多了一个new Runnable。(线程和主程序运行结果可能会调换顺序)。(线程和主程序运行结果可能会调换顺序)。(线程和主程序运行结果可能会调换顺序)。(线程和主程序运行结果可能会调换顺序)。(线程和主程序运行结果可能会调换顺序)原创 2023-06-21 09:43:16 · 2390 阅读 · 0 评论 -
关于Java多线程不安全的问题简析
在了解多线程不安全的问题之前让我们先来看如下代码简单来说就是线程一和线程二同时循环加10000次按照常理来说10000+10000=20000但是运行结果如下由此,引入了我们的多线程安全问题其实我们这里看到的++操作,其实是在内存中是分为三步的load 把内存的数据读取到 CPU 寄存器上add 把 CPU 中寄存器上的值进行 +1save 把寄存器中的值, 写回到内存中如果把运行的时间化为一个纵轴的话,可能就会出现以下打乱顺序的情况。原创 2023-06-21 20:17:29 · 464 阅读 · 0 评论 -
Java进程调度的基本过程(详细易理解)
了解这个问题之前,我们需要先打开我们桌面上的的学习资料啪的一下,很快啊,点双击学习资料.exe之后,在后台(ctrl+alt+delete,任务管理器)我们就能看到这个东西我们这里肉眼直观可见的这个XX游戏登录程序,就是我们所谓的进程桌面上的exe文件,只是起了一个发起调用的作用如果我们不点击exe文件,那么这个进程就永远不会被触发换句话来说不调用,不触发很好的一句废话。原创 2023-06-21 08:51:24 · 425 阅读 · 0 评论 -
javase个人小结
封装:就如同我们使用的计算机,计算机给用户只提供了开机和关机键的功能,像计算机内的CPU等等元件我们是不管的,我们把这种隐藏内部,只提供使用接口的方式成为封装。列如,我有一个学生类,有一个姓名属性,为了保护这个属性,我将其设为private,后面只能用get和set接口调用。简单来说,就是一个类,能够继承另一个类的所有东西,并且在此之外还能拥有自定义的东西。因为一个类只能继承一个类,所以为了实现多继承,我们出现了接口。一、简单来说,java的异常分为两类,运行时异常和编译时异常。什么是封装,继承,多态。原创 2023-05-23 18:03:59 · 561 阅读 · 1 评论 -
Java异常简析
一般来说,我们遇到的通常是运行时异常,这个时候我们可以使用try catch来解决。A:将所有try catch代码取消,就一个光代码,看看报错,列如。一、简单来说,java的异常分为两类,运行时异常和编译时异常。Q:如果不知道括号里面填什么错误类型怎么办?第二步:继承总异常,然后创建一个有参一个无参。第一步:新建一个自己的异常类。二、遇到异常怎么办?原创 2023-05-23 17:43:44 · 59 阅读 · 0 评论 -
多态的简单了解
简单来说就是不同事物调用同一个方法,产生不同的结果。原创 2023-05-21 22:44:32 · 46 阅读 · 0 评论 -
Java中repalce函数及其相关replaceAll的简单介绍(自用)
简而言之和replace一样,唯一不同的是,replaceAll可以。就是只替换遇到的第一个,后面不管。原创 2023-03-21 23:35:58 · 447 阅读 · 0 评论 -
Java split函数简单介绍
注意比较一下第三个和第四个,我们可以发现,以多个字符进行分割字符串的时候,即使分割后的字符串为空字符串,也要单独占一位。第一个参数表示分割的符号,第二个参数表示需要将其分割为几份。以特定字符对字符串进行分割,结果以字符串数组形式返回。原创 2023-03-21 00:55:15 · 1114 阅读 · 0 评论