宁宁可可
这个作者很懒,什么都没留下…
展开
-
Java SDK性能测试代码1.1.0_2.3.4.8修改_20220824
本次修改:1、各算法的调用接口修改后,测试代码(runnable任务)都需要修改2、algorithm入参和出参Common.java调用,入参明文是String,以及算法AlgorithmEnum.valueOf(algorithm);3、SM2 web接口获取KeyIdSm2原创 2022-08-24 12:59:01 · 546 阅读 · 0 评论 -
SM2加密/签名,解密/验签Java多线程之Runnable任务
SM2加密和签名Runnable任务原创 2022-08-22 15:41:41 · 1776 阅读 · 0 评论 -
Java并发编程系列34:CountDownLatch使用
CountDownLatch(闭锁/门阀)是一个同步协助类,允许一个或多个线程等待,直到其他线程完成 操作集。原创 2022-07-29 17:40:25 · 1556 阅读 · 0 评论 -
Java并发编程系列32:线程池shutdown()和exs.isTerminated()结合使用
线程池shutdown()和exs.isTerminated()结合使用原创 2022-07-20 15:38:11 · 1112 阅读 · 0 评论 -
Java并发编程系列31:线程isAlive()方法的使用
多线程执行时,都会判断下线程是否结束,这里用isAlive()来判断是否存活。原创 2022-07-08 17:39:40 · 1054 阅读 · 0 评论 -
Java多线程针对国密算法SM2进行性能测试
Java多线程针对国密算法SM2进行性能测试原创 2022-06-17 15:02:57 · 1294 阅读 · 4 评论 -
Java并发编程系列30:抛出异常 java.util.concurrent.RejectedExecutionException
1、背景介绍Java使用线程池newFixedThreadPool针对算法进行并发测试时,出现以下错误java.util.concurrent.RejectedExecutionExceptionException in thread "main" java.util.concurrent.RejectedExecutionException: Task com.cipherxxxcrypto.pertest.SM4PerTest$DecTask@76ed5528 rejected from ja原创 2022-05-20 20:12:59 · 9547 阅读 · 0 评论 -
[Java多线程性能测试]Executors+Runnable+CyclicBarrier+HttpClient性能测试自动化工具
dJava多线程Executors+Runnable+CyclicBarrier+HttpClient性能测试自动化工具作者:HMF2021/04/171.JAVA 性能测试自动化架构图2.Java 性能测试背景2.1性能测试代码目的1、能够用代码编写自动化工具对客户端进行性能测试。2、减少挨个执行,收集和统计数据的人工成本。1).减少挨个执行性能命令的人工成本。2).减少人工收集数据和统计数据的人工成本。3).减少从管理平台新增客户端,下载客户端,安装客户.原创 2022-04-25 06:29:50 · 1979 阅读 · 0 评论 -
A fatal error has been detected by the Java Runtime Environment, C [VCRUNTIME140.dll+0x1989]
前言:在服务器Linux(内存32G)下执行加密算法,入参是1G时发现了内存崩溃问题,直接杀死了Java进程,所以需要在Windows调试代码看是否能重现此问题。Windows的内存小,入参是300M就出现了,后来排查到原因是因为执行程序需要的内存超过了运行机器的内存。Linux执行时内存的效果:Windows执行:在运行Java代码时,出现A fatal error has been detected by the Java Runtime Environment, C [VCRUNT原创 2022-04-18 14:36:22 · 3795 阅读 · 0 评论 -
Java并发编程系列29:ThreadPoolExecutor自定义拒绝策略(2)
ThreadPoolExecutor自定义拒绝策略(2)首先说下ThreadPoolExecutor的四种拒绝策略 ThreadPoolExecutor.AbortPolicy ThreadPoolExecutor 默认策略 直接抛出java.util.concurrent.RejectedExecutionException异常 ThreadPoolExecutor.DiscardPolicy 丢弃当前任务,但是不抛出异原创 2022-02-13 20:40:14 · 543 阅读 · 0 评论 -
Java并发编程系列28:ThreadPoolExecutor自定义拒绝策略(1)
ThreadPoolExecutor自定义策略(1)首先说下ThreadPoolExecutor的四种拒绝策略 ThreadPoolExecutor.AbortPolicy ThreadPoolExecutor 默认策略 直接抛出java.util.concurrent.RejectedExecutionException异常 ThreadPoolExecutor.DiscardPolicy 丢弃当前任务,但是不抛出异常原创 2022-02-13 20:36:24 · 484 阅读 · 0 评论 -
Java并发编程系列27:ThreadPoolExecutor的4种拒绝策略
ThreadPoolExecutor拒绝策略原创 2022-02-13 14:56:21 · 8310 阅读 · 0 评论 -
Java并发编程系列26:ThreadPoolExecutord的等待队列
ThreadPoolExecutor自定义线程(2)待续原创 2022-02-13 14:07:14 · 2218 阅读 · 0 评论 -
Java并发编程系列25:ThreadPoolExecutor自定义线程池
ThreadPoolExecutor自定义线程ThreadPoolExecutor构造方法 public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit,...原创 2022-02-13 10:46:10 · 405 阅读 · 0 评论 -
Java并发编程系列24:理解Java线程池ThreadPoolExecutor类
ThreadPoolExecutor构造方法 public class ThreadPoolExecutor extends AbstractExecutorService { ..... public ThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAliveTime,TimeUnit unit, BlockingQueue<Runnable&...原创 2022-02-12 19:39:03 · 292 阅读 · 0 评论 -
Java并发编程系列23:Executors框架和3种线程池
Executors框架成员:ThreadPoolExecutor实现类、ScheduledThreadPoolExecutor实现类、Future接口、Runnable接口、Callable接口和Executors。ThreadPoolExecutor实现类了解:构造方法: public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize,...原创 2022-02-08 23:13:39 · 735 阅读 · 0 评论 -
Java并发编程系列22:多线程之join()和isAlive方法
有两种方法可以判定一个线程是否结束。第一,可以在线程中调用isAlive()。这种方法由Thread定义,它的通常形式如下:final boolean isAlive( )如果所调用线程仍在运行,isAlive()方法返回true,如果不是则返回false。 但isAlive()很少用到。第二,等待线程结束的更常用的方法是调用join(),描述如下:final void join( ) throws InterruptedException该方法等待所调用线程结束。该名字来自于要求线原创 2022-01-28 19:27:06 · 665 阅读 · 0 评论 -
Java并发编程系列21:多线程之生产者和消费者模式(使用BlockingQueue实现)
Java多线程之生产者和消费者模式(使用BlockingQueue实现)原创 2022-01-18 21:49:54 · 1053 阅读 · 0 评论 -
Java并发编程系列20:多线程之生产者和消费者模式(使用Lock中Condition的await/signalAll)
Java多线程之生产者和消费者模式(使用Lock中Condition的await/signalAll)原创 2022-01-18 21:48:22 · 1689 阅读 · 0 评论 -
Java并发编程系列19:多线程之生产者和消费者模式_管程法(wait/notify)
生产者和消费者模式:这其实是一个线程同步问题,生产者和消费者共享同一个资源,并且生产者和消费者之间相互依赖,互为条件对于生产者,没有生产产品之前,要通知消费者等待。而生产了产品之后,又需要马上通知消费者消费。对于消费者,消费之后,要通知生产者已经消费完成,需要继续生产新的产品给消费者消费。在生产者和消费者问题中,仅有synchronizede是不够的synchronized可阻止并发更新同一个共享资源,实现了同步synchronized不能用来实现不同线程之间的消息传递(通信)...原创 2022-01-17 23:15:18 · 435 阅读 · 0 评论 -
Java并发编程系列18:多线程之生产者和消费者模式_信号灯法(wait/notify通知机制)
生产者消费者模式 生产者消费者问题(Producer-consumer problem),也称为有限缓冲问题(Bounded-buffer problem),是一个多线程同步问题的经典案例。该问题描述了两个共享大小缓冲区的线程---既所谓的“生产者”和“消费者”----在实际运行时会发生的问题。生产者的主要作用时生成一定量的数据放到缓冲区中,然后重复此过程。以此同时,消费者也在缓冲区消费这些数据。该问题的关键是要保证生产者不会在缓冲区满时加入数据,消费者也不会在缓冲区中空时消费数据。...原创 2022-01-17 00:03:30 · 1943 阅读 · 0 评论 -
Java并发编程系列17:线程的生命周期(状态)和停止线程
线程的状态:新生状态:用new关键字和Thread类或其子类简历一个线程对象后,该线程对象就处于新生状态。处于新生状态的线程有自己的内存空间,通过调用start方法进入就绪状态(runnable)就绪状态:处于就绪状态的线程已经具备了运行条件,但还没有分配到CPU,处于线程就绪队列,等待系统为其分配CPU,等待状态并不是执行状态,当系统选择顶一个等待执行的Thread对象后,它就会从等待执行状态进入执行状态,系统挑选的动作称之为"CPU调度"。一旦获得CPU,线程就进入运行状态并自动化调用自己的run原创 2022-01-13 21:30:13 · 402 阅读 · 0 评论 -
Java并发编程系列16:Lock(2)
在https://blog.youkuaiyun.com/fen_fen/article/details/122392800 遇到线程不安全问题如果有网络延迟的情况下,3个线程同时处理1个资源就会有有线程不安全问题,会同时抢到同1个资源。解决方法一,参考:https://blog.youkuaiyun.com/fen_fen/article/details/122395775解决方法二:Lock解析参考:https://blog.youkuaiyun.com/fen_fen/article/details/121470原创 2022-01-09 18:46:05 · 2340 阅读 · 0 评论 -
Java并发编程系列15:同步锁synchronized(2)
在https://blog.youkuaiyun.com/fen_fen/article/details/122392800遇到线程不安全问题解决方法:使用synchronized解析可参考:https://blog.youkuaiyun.com/fen_fen/article/details/1214661281、synchronized代码块,代码示例package runnable;// 定义一个实现了 Runnable 接口的类class RunnableTest4 implements ..原创 2022-01-09 17:22:31 · 2255 阅读 · 0 评论 -
Java并发编程系列14:线程阻塞之sleep()
线程阻塞之sleep()sleep休眠,不释放锁1)与时间相关,倒计时2)模拟网络延迟1)与时间相关,倒计时数字倒计示例一:public class SleepTest { public static void main(String[] args){ int num=10; while(true){ System.out.println(num--); Thread.sleep(1000);...原创 2022-01-09 14:15:37 · 768 阅读 · 0 评论 -
Java并发编程系列13:通过Callable接口+Future接口实现多线程
通过Callable接口+Future接口实现多线程优点:可以获取返回值Callable是类似于Runnable的接口,实现Callable接口的类和实现Runnable的类是课被其他线程执行的任务。Callable和Runnable有几点不同:1)Callable规定的方法是call(),而Runnable规定的方法是runn()2)call方法可抛出异常,而runn方法是不能抛出异常的3)Callable的任务执行后可返回值,运行Callable任务可难道一个Future对象,而Runn原创 2022-01-09 09:41:07 · 831 阅读 · 0 评论 -
Java并发编程系列12:多线程之静态代理设计模式
/** *静态代理设计模式 * 1、真实角色 * 2、代理角色:持有真实角色的引用 * 3、二者实现相同的接口 */代码示例:/** *静态代理设计模式 * 1、真实角色 * 2、代理角色:持有真实角色的引用 * 3、二者实现相同的接口 */public class StaticProxy { public static void main(String[] args){ //创建真实角色对象 You you=new You();.原创 2022-01-08 22:12:12 · 459 阅读 · 0 评论 -
Java并发编程系列实践篇:编写Java多线程代码针对算法进行性能测试
需求:最近接到1个性能需求,针对加密算法的JAVA接口进行性能测试算法实现:针对中文的汉字进行加密的算法,算法的底层是C编写的,中间加了一层JAVA JNI JAR包的JAVA接口调用C编写的算法。想法:性能测试,需要用到JAVA代码中的多线程编程,根据最近用到的JAVA多线程知识,编写一段JAVA多线程代码进行性能测试实践过程1、先确认性能需求,确认性能测试方案1.1、需要测试的服务器版本:Liunux Centos操作系统:i7,Linux AIX操作系统收集以下信息,示例:.原创 2022-01-08 14:05:18 · 558 阅读 · 0 评论 -
Java并发编程系列11:CyclicBarrier+Executors+Runnable结合,多线程执行(2)
CyclicBarrier+Executors+Runnable结合,多线程执行(2)原创 2022-01-06 21:31:14 · 205 阅读 · 0 评论 -
Java并发编程系列10:CyclicBarrier+Executors+Runnable结合,多线程执行(1)
Java(79):CyclicBarrier+Executors+Runnable结合,实现多线程安全https://blog.youkuaiyun.com/fen_fen/article/details/121649731一、需求和如何实现需求:需要使用Java代码编写性能测试程序针对单独的算法进行性能测试想法:通过CyclicBarrier+Executors+Runnable结合,实现多线程下的算法性能测试实现方式如下:CyclicBarrier+线程池的调用方式1、定义一个 Runnab.原创 2022-01-05 21:54:13 · 369 阅读 · 0 评论 -
Java并发编程系列09:继承Thread类实现多线程2
Java(70):多线程学习01-->继承Thread类实现多线程1https://blog.youkuaiyun.com/fen_fen/article/details/121460313一、继承Thread类实现多线程02Thread类本质上也是实现了Runnable接口的一个类,启动线程的唯一方法就是通过Thread类的start()实例方法。start()方法是一个native方法,它将启动一个新线程,并执行run()方法。这种方式实现多线程很简单,通过自己的类直接extend Thread,并复原创 2021-12-28 09:32:49 · 266 阅读 · 0 评论 -
Java并发编程系列08:CyclicBarrier+Executors+Runnable结合,实现多线程安全
Java(79):CyclicBarrier+Executors结合,实现多线程安全原创 2021-12-01 10:28:59 · 541 阅读 · 0 评论 -
Java并发编程系列07:多线程的实现方式:继承Thread类、实现Runnable接口或Callable接口
最近开始了解多线程,发现内容太多,那就一点一点来吧。先了解最基础的,多线程有几种实现方式?从网上了解到,多线程有3种实现方式。多线程的实现方式有:1、继承Thread类、2、实现Runnable接口3、Callable接口来个小例子,具体实现如下:一、继承Thread类通过继承 Thread 类,并重写它的 run 方法,我们就可以创建一个线程。首先定义一个类来继承 Thread 类,重写 run 方法。 然后创建这个子类对象,并调用 start 方法启动线程。clas原创 2021-11-29 14:19:48 · 2359 阅读 · 0 评论 -
Java并发编程系列06:Lock之ReentrantLock(1)
前提:在学Lock时,发现创建对象用的是ReentrantLock。这里也了解下“ReentrantLock”//创建一个锁对象private final Lock lock = new ReentrantLock();上一篇文章:多线程学习04-->解决多线程安全-Lockhttps://blog.youkuaiyun.com/fen_fen/article/details/121470551ReentrantLock简介ReentrantLock是一个可重入且独占式的锁,它具有与使用sy原创 2021-11-25 14:55:11 · 983 阅读 · 0 评论 -
Java并发编程系列:多线程的一些知识点
1、什么是线程安全又是一个理论的问题,各式各样的答案有很多,我给出一个个人认为解释地最好的:如果你的代码在多线程下执行和在单线程下执行永远都能获得一样的结果,那么你的代码就是线程安全的。这个问题有值得一提的地方,就是线程安全也是有几个级别的:(1)不可变像String、Integer、Long这些,都是final类型的类,任何一个线程都改变不了它们的值,要改变除非新创建一个,因此这些不可变对象不需要任何同步手段就可以直接在多线程环境下使用(2)绝对线程安全不管运行时环境如何,调用者都不需要额原创 2021-11-22 15:57:55 · 161 阅读 · 0 评论 -
Java并发编程系列05:CyclicBarrier+Runnable,实现线程安全
CyclicBarrierCyclicBarrier的字面意思是可循环(Cyclic)使用的屏障(Barrier),它要做的事情是,让一组线程到达一个屏障(也可以叫同步点)时被阻塞,直到最后一个线程到达屏障时,屏障才会开门,所有被屏障拦截的线程才会继续干活,线程进入屏障通过CyclicBarrier的await()方法。CountDownLatch是一个同步的辅助类,允许一个或多个线程,等待其他一组线程完成操作,再继续执行。CyclicBarrier是一个同步的辅助类,允许一组线程相互之间等待,原创 2021-11-22 16:32:45 · 832 阅读 · 1 评论 -
Java并发编程系列04:解决多线程安全-Lock
多线程学习04-->解决多线程安全-LockLock常用的方法有:尝试获取锁,获取成功则返回,否则阻塞当前线程void lock();尝试获取锁,线程在成功获取锁之前被中断,则放弃获取锁,抛出异常void lockInterruptibly() throws InterruptedException;尝试获取锁,获取锁成功则返回true,否则返回falseboolean tryLock();尝试获取锁,若在规定时间内获取到锁,则返回true,否则返回false,未获取锁之前被中断原创 2021-11-22 14:29:52 · 472 阅读 · 0 评论 -
Java并发编程系列03:解决多线程安全—synchronized
根据《Java(71):多线程学习02-->实现Runnable接口方式实现多线程》一文中1.2【数据资源共享】章节,数据资源共享会遇到多线程不安全问题,多个线程同时操作同1个对象,如果控制不好,就会产生问题,叫做线程不安全,可以用synchronized来解决。synchronized简介synchronized相当于给方法,对象上锁或者给类上锁,这样防止其他线程访问共享资源,进而保护多线程的安全。synchronized的原理是它使用了flag标记ACC_SYN-CHRONIZED,执行线程先持原创 2021-11-22 10:42:12 · 683 阅读 · 0 评论 -
Java并发编程系列02:实现Runnable接口方式实现多线程
1、实现Runnable接口方式实现多线程与继承Thread类相比,实现Runnable接口的MyThread类在结构上与之前是没有区别的,但是有一点是有严重区别的,如果继承了Thread类,那么可以直接继承start()方法,但是实现Runnable接口是没有start()方法的。不管何种情况下,如果要启动多线程一定要依靠Thread类完成。如果自己的类已经extends另一个类,就无法直接extends Thread,此时,必须实现一个Runnable接口,如下: 1.1定义Runna原创 2021-11-21 23:46:00 · 7125 阅读 · 1 评论 -
Java并发编程系列01:继承Thread类实现多线程
多线程学习1-->继承Thread类实现多线程Thread类本质上也是实现了Runnable接口的一个类,启动线程的唯一方法就是通过Thread类的start()实例方法。start()方法是一个native方法,它将启动一个新线程,并执行run()方法。这种方式实现多线程很简单,通过自己的类直接extend Thread,并复写run()方法,就可以启动新线程并执行自己定义的run()方法。例如:class MyThread extends Thread{ private i原创 2021-11-21 21:41:55 · 1848 阅读 · 0 评论