跳至主要內容
interrupt方法对线程的影响

在Java中,interrupt() 方法是 Thread 类中的一个实例方法,用于中断线程。它并不直接终止线程的执行,而是设置线程的中断状态(即把该线程的中断标志设为 true)。线程可以定期检查这个中断状态,以判断是否应该提前退出或改变行为。以下是 interrupt() 方法对线程的影响:

1. 中断状态

  • 当调用 thread.interrupt() 时,如果线程正在运行,那么它的中断状态将被设置为 true。线程可以通过 Thread.currentThread().isInterrupted() 来检查自身的中断状态。
  • 如果线程已经处于中断状态,则再次调用 interrupt() 不会有额外的效果。

zheng大约 3 分钟java基础java
java线程池队列问题

问题:
Java线程池,5核心、10最大、20队列,第6个任务来了是什么状态?第26个任务来了是什么状态?队列满了以后执行队列的任务是从队列头 or 队尾取?
核心线程和非核心线程执行结束后,谁先执行队列里的任务?

在Java中,线程池的配置和行为由ThreadPoolExecutor类控制。根据你提供的参数,假设你创建了一个具有以下配置的线程池:

  • 核心线程数(corePoolSize):5
  • 最大线程数(maximumPoolSize):10
  • 任务队列容量(queue capacity):20

zheng大约 4 分钟java基础线程
Future使用:runnable和callable方法区别

所谓异步调用其实就是实现一个可无需等待被调用函数的返回值而让操作继续运行的方法。
在 Java 语言中,简单的讲就是另启一个线程来完成调用中的部分计算,使调用继续运行或返回,而不需要等待计算结果。但调用者仍需要取线程的计算结果。

一、 Future 是什么

作用

future 可以用于异步获取多线程任务结果 , Callable 用于产生结果,Future 用于获取结果

流程

当 Future 进行 submit 开始 , 业务处理已经在多线程中开始 , 而 Get 即从多线程中获取数据
当 Get 获取时业务还未处理完 , 当前线程会阻塞 , 直到业务处理完成 . 所以需要注意 future 的任务安排
使用 future 会有以下效果:


zheng大约 7 分钟java基础java
BigDecimal

1、介绍

Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数,但在实际应用中,可能需要对更大或者更小的数进行运算和处理。
一般情况下,对于那些不需要准确计算精度的数字,我们可以直接使用Float和Double处理,但是Double.valueOf(String) 和Float.valueOf(String)会丢失精度。所以开发中,如果我们需要精确计算的结果,则必须使用BigDecimal类来操作。
BigDecimal所创建的是对象,故我们不能使用传统的+、-、*、/等算术运算符直接对其对象进行数学运算,而必须调用其相对应的方法。方法中的参数也必须是BigDecimal的对象。构造器是类的特殊方法,专门用来创建对象,特别是带有参数的对象。


zheng大约 5 分钟java基础BigDecimal
java操作txt文件总结

1、介绍

(1)Java.io包

File类

这是Java中一个内置的包,专门用于文件读写的一个操作的类
在程序中使用 文件或者流的操作就要导入import java.io.*;

File类可以表示一个文件,还可以表示一个目录(Directory),所以我们可以在程序中用File 类的对象可以表示一个文件 或者 目录
当创建了 File 对象之后,我们可以利用该对象来对文件或者目录进行书属性修改:例如:文件的名称,修改日期的日期等等
File 类的对象 还不能直接对文件进行读写操作,只能修改文件的属性


zheng大约 6 分钟java基础java文件
Netty介绍及简单示例

一、介绍

简介

netty是一个异步、基于事件驱动的网络应用框架,用以快速开发高性能、高可用的网络IO程序
netty主要针对在TCP协议下,面向Clients端的高并发应用,或者peer-to-peer场景下的大量数据持续性传输的应用
netty本质是一个NIO框架,适用于服务器通讯相关的多种场景。
Netty是一个提供异步事件驱动的网络应用框架,用以快速开发高性能、高可靠性的网络服务器和客户端程序。
Netty是一个NIO框架,使用它可以简单快速地开发网络应用程序,比如客户端和服务端的协议。Netty大大简化了网络程序的开发过程比如TCP和UDP的 Socket的开发。


zheng大约 5 分钟java基础Netty
JDK并发包常用类

1、工具类

提供并发控制手段: CountDownLatch、CyclicBarrier、Semaphore

线程间数据交换: Exchanger

CountDownLatch:

允许一个或多个线程等待其他线程完成操作。

CountDownLatch的构造函数接受一个int类型的参数作为计数器,你想等待n个点完成,就传入n。

两个重要的方法:

countDown():调用时,n会减1。

await():调用会阻塞当前线程,直到n变成0。

await(long time,TimeUnit unit):等待特定时间后,就不会继续阻塞当前线程。


zheng大约 3 分钟java基础java
CountDownLatch

1、CountDownLatch简介

	CountDownLatch是一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待,直到其他线程执行完后再执行。

	类似的任务可以使用线程的  join()  方法实现:在等待时间点调用其他线程的  join()  方法,当前线程就会等待join线程执行完之后才继续执行,但 CountDownLatch 实现更加简单,并且比 join 的功能更多。

CountDownLatch函数列表

CountDownLatch(int count)
构造一个用给定计数初始化的 CountDownLatch// 使当前线程在锁存器倒计数至零之前一直等待,除非线程被中断。
void await()
// 使当前线程在锁存器倒计数至零之前一直等待,除非线程被中断或超出了指定的等待时间。
boolean await(long timeout, TimeUnit unit)
// 递减锁存器的计数,如果计数到达零,则释放所有等待的线程。
void countDown()
// 返回当前计数。
long getCount()
// 返回标识此锁存器及其状态的字符串。
String toString()

zheng大约 3 分钟java基础java
java中的Queue队列

1、介绍

    Queue: 基本上,一个队列就是一个先入先出(FIFO)的数据结构
    Queue接口与List、Set同一级别,都是继承了Collection接口。LinkedList实现了Deque接 口。

2、Queue的实现:

一个是以ConcurrentLinkedQueue为代表的高性能队列;
一个是以BlockingQueue接口为代表的阻塞队列;

(1)没有实现的阻塞接口队列

	没有实现的阻塞接口的LinkedList: 实现了java.util.Queue接口和java.util.AbstractQueue接口

zheng大约 5 分钟java基础java
运算符

^ 位异或运算

运算规则:两个数转为二进制,然后从高位开始比较,如果 相同 则为0,不相同 则为1

比如:8^11

8转为二进制是1000,11转为二进制是1011.从高位开始比较得到的是:0011.然后二进制转为十进制,就是Integer.parseInt("0011",2)=3


zheng小于 1 分钟java基础运算符
2
3
4