Java
文章平均质量分 71
RojerAlone
脚踏实地,笨鸟先飞。
展开
-
Java配置环境变量
我的操作系统是Win8的。右键我的电脑,单击属性高级系统设置->环境变量所有值都为全英文,不能有中文符号,否则会出错。一、JAVA_HOME路径值为jdk安装目录,后边不带分号二、CLASSPATH这是一个jar包的调用。.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar; (前面原创 2016-08-24 15:58:00 · 302 阅读 · 0 评论 -
CountDownLatch
CountDownLatchCountDownLatch 直译过来为“倒数阀门”,顾名思义,它是起到一个阀门的作用,实际上是用来控制线程的执行过程。来看一下这个类提供了哪些方法: 从图中可以看出,CountDownLatch 的构造方法是传入一个整数,然后提供了 await()、countDown()、getCount() 等方法,还有一个内部类 Sync,这个内部类继承了 AbstractQue原创 2017-09-02 10:34:29 · 459 阅读 · 0 评论 -
CyclicBarrier
CyclicBarrier字面意思“循环屏障”,翻译为“可重用的屏障”更贴切一点。这个工具类的作用是起到一个栅栏的作用,当指定数量的线程都执行到某一个步骤之后,再一起往下执行,相当于一个阀门,容量满了再开阀门。看一下这个类的结构:这个类没有继承 AbstractQueuedSynchronizer,内部类也没有继承,而是使用了 ReentrantLock lock 这样一个变量来控制线程同步,内部类原创 2017-09-02 10:35:54 · 450 阅读 · 0 评论 -
Semaphore
SemaphoreSemaphore 是 Java 并发包中提供的一个工具类,翻译过来为“信号量”,作用是控制并发线程的数量。类的结构先来看一下 Semaphore 的结构: Semaphore 中有三个个内部类:类 Sync 继承了 AbstractQueuedSynchronizer,重写了 tryReleaseShared 方法,还有一些在 Semaphore 中用到的辅助方法,都是对线程原创 2017-09-02 11:49:03 · 483 阅读 · 0 评论 -
AbstractQueuedSynchronizer 之 互斥锁
AbstractQueuedSynchronizer 之 互斥锁acquire源码如下:/** * Acquires in exclusive mode, ignoring interrupts. Implemented * by invoking at least once {@link #tryAcquire}, * returning on success. Otherwise th原创 2017-08-23 15:36:28 · 303 阅读 · 0 评论 -
AbstractQueuedSynchronizer 之 共享锁
AbstractQueuedSynchronizer 之 共享锁acquireShared/** * Acquires in shared mode, ignoring interrupts. Implemented by * first invoking at least once {@link #tryAcquireShared}, * returning on success. Ot原创 2017-08-23 15:38:59 · 407 阅读 · 0 评论 -
ThreadPool 之 线程池概览
ThreadPool[注] 本文中的源码基于 JDK1.8,源码中的注释为 JDK 中注释的翻译加上个人的理解。如有错误欢迎指正。引言 因为进程的切换相当耗费资源,加上 CPU 的发展,操作系统中引入了线程的概念。相比于进程的上下文切换,线程的切换更轻量级,但是不代表没有开销,而且大部分多线程的生命周期都比较短,会发生频繁的线程创建、销毁动作,这也是相当消耗资源的,因此引入了线程池。 合理利用线原创 2017-07-30 00:10:15 · 591 阅读 · 0 评论 -
ThreadPool 之 线程池实现类 ThreadPoolExecutor
ThreadPool 之线程池实现类 ThreadPoolExecutor 接上篇文章 ThreadPool 之 线程池概览。ThreadPoolExecutor 线程池 ThreadPoolExecutor 继承了 AbstractExecutorService,实现了核心方法 execute 以及一些获取线程池信息的方法。 ThreadPoolExecutor 有一些重要的参数:// ct原创 2017-08-01 11:08:13 · 1005 阅读 · 0 评论 -
ThreadPool 之 Callable、Future 和 FutureTask
ThreadPool 之 Callable、Future 和 FutureTaskCallable、Future 和 FutureTask 一般情况下,线程有两种创建方式,一种是继承 Thread 类,一种是实现 Runnable 接口。在线程运行执行的都是 run 方法,这是一个 void 方法,没有返回值。如果要获取线程执行的结果,就必须传入一个变量,在执行完之前将结果写入这个变量中。 从原创 2017-08-03 20:47:20 · 668 阅读 · 0 评论 -
ThreadPool 之 线程池工具类 Executors
接上篇 ThreadPool 之 Callable、Future 和 FutureTask。用 Executors 创建线程池 JDK 中提供了一个 Executors 类,在这个类中构造好了几个通用的线程池,并且 JDK 文档中也强烈推荐(urged to use)使用 Executors 来构建线程池。Executors/** * 创建容量为 nThreads 的线程池,最大工作线程也为 n原创 2017-08-03 20:51:50 · 1106 阅读 · 0 评论 -
Java 由生至死
对象是怎么降生的从.java文件到.class文件 计算机硬件只能识别机器码0和1,Java编译器(javac)将.java文件编译成.class的字节码文件,再由JVM加载.class文件,执行时解释为机器码进行执行,可以说Java是一种半编译半解释型的语言。JVM加载. class文件.class文件的结构 Class文件是一组以8位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑地原创 2017-07-11 17:25:35 · 958 阅读 · 0 评论 -
Java中的@interface以及method.invoke()
前言 这几天在看暑假要去实习的公司的框架源码,该框架十分轻量级,上手贼快。 Web容器是Jetty,数据库是MySQL,使用该框架形式为插件开发,只需要按照该框架可以识别的规则开发,再将项目放到指定目录下,服务启动后加载该目录下的所有插件,用反射进行方法调用(几乎所有的框架底层都是用反射的吧)。 看了一天过后对框架整体有了一定了解,但是之前自己没有写过相关的代码,因此写了几个小demo原创 2017-04-28 22:56:11 · 2014 阅读 · 0 评论 -
Java中synchronized和Lock实现并发锁
前言总结原创 2017-03-06 21:07:15 · 1026 阅读 · 0 评论 -
Java中的多线程
前言 昨晚在看死锁相关的东西,看到了synchronized关键字,然后就想写一篇关于synchronized关键字的博客,就去仔细看了看相关的东西。synchronized关键字在使用多线程的时候使用,于是复习一下多线程的东西,写篇博客加深一下印象。 Java中实现多线程的方式有两种,一是继承Thread类,二是实现Runnable接口,先看继承Thread类。继承Thread类 Thr原创 2017-03-05 21:35:47 · 426 阅读 · 0 评论 -
Java中的Static关键字
一直对Static很模糊,不知道是什么东西,今天查了一下发现一篇很优秀的文章,链接有两点:1)C/C++中的Static和Java中的不一样:再想起来了有空看一下2)看评论说构造函数不是Static的:构造函数可以调用非静态函数的变量,这样看来的确和Static定义不符原创 2016-10-18 16:51:41 · 253 阅读 · 0 评论 -
Servlet+JavaBean+MySQL实现用户登录认证
开始JaveEE的学习。课程实验之“Servlet+JavaBean+MySQL实现用户登录认证”。配置:MyEclipse:2016Stable1.0Tomcat:7.0.70MySQL:5.7.15配置环境有一些要注意的事项:1.Tomcat解压后的文件夹一般有个Tomcat的文件夹,进去之后有个同名的文件夹,再点进去才是各种文件及文件夹,这样在MyEcli原创 2016-09-22 11:37:54 · 3287 阅读 · 5 评论 -
一次 CPU 飙高异常的处理
一次 CPU 飙高异常的处理某天,同事告诉我说我在公司负责的一个服务 CPU 占用过高,达到 700% 多(多核 CPU),猜测可能是 gc 比较频繁,让我调一下堆大小,调整过后重新部署,发现 CPU 使用率降至正常水平(6% 左右)。过了几天想起来这个事,登上服务器看下服务是否正常,发现 CPU 使用率又到了 500% 多,于是就通过一些工具命令排查问题。初步排查是否是 gc 问...原创 2018-08-22 22:14:57 · 1816 阅读 · 2 评论