自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 资源 (1)
  • 问答 (1)
  • 收藏
  • 关注

原创 多线程之公平锁与非公平锁

公平与非公平锁:锁Lock分为"公平锁"和"非公平锁",公平锁标识线程获取锁的顺序是按照线程加锁的顺序来分配的,即先来先得的FIFO先进先出顺序,而非公平锁就是一种获取锁的抢占机制,是随机获得锁的,和公平锁不一样的就是先来的不一定先得到锁,这个方式可能造成某些线程一直拿不到锁,结果就是不公平的了。1.公平锁package LockTest;import java.util.concurrent.locks.ReentrantLock;/** * @Author LiBinquan */pu

2020-05-29 11:00:06 209

原创 多线程之condition使用

1.使用Condition实现等待/通知:错误用法与解决关键字synchronized与wait()和notify()、notifyAll()方法相结合可以实现等待/通知模式,类ReetrantLock也可以实现同样的功能,但需要借助于Condition对象。Condition类是在JDK5中出现的技术,使用它有更好的灵活性,使用它有更好的灵活性,比如可以实现多路通知功能,也就是在一个Lock对象里面可以创建多个Condition(即对象监控器)示例,线程对象可以注册在指定的Condition中,从而可以

2020-05-26 16:04:59 493

原创 多线程之Lock使用

1.使用ReentrantLock类在Java多线程中,可以使用synchronized关键字来实现线程之间同步互斥,但在JDK1.5中心增加了ReentrantLock类也能达到同样的效果,并且在扩展功能上也更加强大,比如具有嗅探锁定、多路分支通知等功能,而且在使用上也比synchronized更加的灵活。1.1使用ReentrantLock实现同步既然ReentrantLock类在功能上相比synchronized更多,示例代码如下:package LockTest;import java.

2020-05-25 11:00:37 294

原创 多线程之类InheritableThreadLocal的使用

使用InheritableThreadLocal可以在子线程中取得父线程继承下来的值。1.值继承示例代码:package InheritableThreadLocalTest;import java.util.Date;/** * @Author LiBinquan */public class InheritableThreadLocalExt extends InheritableThreadLocal{ @Override protected Object init

2020-05-22 18:10:09 177

原创 多线程之类ThreadLocal的使用

变量值得共享可以使用public static变量的形式,所有的线程都使用同一个public static变量。如果想实现每一个线程都有自己的共享变量,在JDK中提供了类ThreadLock。类ThreadLocal主要解决的就是每个线程绑定自己的值,可以将ThreadLocal类比喻成全局存放数据的盒子,盒子中可以存储每个线程的私有数据。1.方法get和null示例:package ThreadLocal;/** * @Author LiBinquan */public class Ru

2020-05-22 17:57:22 168

原创 多线程之方法join的使用

在很多情况下,主线程穿件并启动子线程,如果子线程中药进行大量的耗时运算,主线程往往将早于子线程结束之前结束。这时,如果主线程想等待子线程执行完成之后再结束,比如子线程处理一个数据,主线程要取得这个数据中的值,就要用到join方法了。方法join的作用是等待线程对象销毁。先来看一下一个示例代码:package JoinTest;/** * @Author LiBinquan */public class MyThread extends Thread{ @Override pub

2020-05-22 14:11:43 334

原创 多线程之管道进行通信(字节流和字符流)

1.通过管道进行线程通信:字节流在Java语言中提供了各种各样的输入/输出流Stream,使我们能够很方便地对数据进行操作,其中管道流(pipeStream)是一种特殊的流,用于在不同线程间直接传送数据。一个线程发送数据到输出管道,另一个线程从输入管道中读数据。通过使用管道,实现不同线程间的通信,而无须借助于类似临时文件之类的东西。在Java的JDK中提供了4个类来使线程间可以进行通信:1.PipedInputStream和PipedOutputStream2.PipedReader和PipedWr

2020-05-21 17:42:59 709

原创 多线程之等待/通知模式的 生产者/消费者模式

等待/通知模式最经典的案例就是”生产者/消费者“模式。但此模式在使用上有几种”变形“,还有一些小的注意事项,但原理都是基于wait/notify的。1.一生产和一消费:操作值示例代码:对象:package entity;/** * @Author LiBinquan */public class ValueObject { public static String value = "";}类P:package entity;/** * @Author LiBinqua

2020-05-21 16:05:26 226

原创 多线程之volatile方法(3)

1.只通知一个线程调用方法notify()一次只随机通知一个线程进行唤醒。示例代码如下:package volatileTest;/** * @Author LiBinquan */public class Service { public void testMethod(Object lock){ try{ synchronized (lock){ System.out.println("begin wait

2020-05-20 14:27:13 104

原创 多线程之等待/通知机制(2)

1.方法wait()锁释放与notify()锁不释放当方法wait()被执行后,锁被自动释放,但执行完notify()方法,锁却不自动释放。示例代码如下:package threadTest;/** * @Author LiBinquan */public class Service { public void testMethod(Object lock){ try{ synchronized (lock){

2020-05-19 15:03:15 77

原创 多线程之等待/通知机制(1)

线程与线程之间不是独立的个体,它们彼此之间可以互相通信和协作。1.不使用等待/通知机制实现线程间通信使用测试案例中使用sleep()结合while(true)死循环法来实现多个线程通信。测试代码如下:package threadTest;import java.util.ArrayList;import java.util.List;/** * @Author LiBinquan */public class MyList { private List list = new A

2020-05-19 10:48:30 301

原创 多线程之volatile方法(2)

1.volatile非原子的特性关键字volatile虽然增加了实例变量在多个线程之间的可见性,但它却不具备同步性,那么也就不具备原子性。示例代码:package volatileTest;/** * @Author LiBinquan */public class MyThread extends Thread{ volatile public static int count; synchronized private static void addCount(){

2020-05-11 17:40:08 133

原创 多线程之volatile方法(1)

关键字volatile的主要作用是使变量在多个线程间可见。1.关键字volatile与死循环如果不是在多继承的情况下,使用集成Thread类和实现Runnable接口在取得程序运行的结果上并没有什么太大的区别。如果一旦出现“多继承”的情况,则用实现Runnable接口的方式来处理多线程的问题就是很有必要的。我这边将用实现Runnable接口的方式来继续理解多线程技术的使用,并且使用关键字volatile来实验在并发情况下的一些特性。同理也是适用于集成Thread类。package volatileT

2020-05-09 14:09:24 206

原创 多线程之synchronized同步语句块(6)

1.内置类和静态内置类关键字synchronized的知识点还涉及内置类的使用。先来看一下简单的内置类测试。package test;/** * @Author LiBinquan */public class PublicClass { private String userName; private String passWord; class Priva...

2020-05-08 15:37:01 117

原创 多线程之死锁

Java线程死锁是一个经典的多线程问题,因为不同的线程都在等待根本不可能被释放的锁,从而导致所有的任务都无法继续完成。在多线程技术中,“死锁”是必须避免的,因为这会造成线程“假死”。测试代码:package test;/** * @Author LiBinquan */public class DealThread implements Runnable { public S...

2020-05-07 09:48:49 106

原创 多线程之synchronized同步语句块(5)

数据类型String的常量池特性在JVM中具有String常量池缓存的功能。将synchronized(string)同步块与String联合使用时,要注意常量池以带来的一些例外。package test;/** * @Author LiBinquan */public class Service { public static void print(String str...

2020-05-06 16:39:26 84

原创 多线程之synchronized同步语句块(4)

1.静态同步synchronized方法与synchronized(class)代码块关键字synchronized还可以应用在static静态方法上,如果这样写,那是对当前的*java文件对应的Class类进行持锁,测试代码如下:package test;/** * @Author LiBinquan */public class Service { synchronize...

2020-05-06 14:53:18 77

原创 多线程之synchronized同步语句块(3)

这篇我主要来论证3个结论。1.当多个线程同时执行synchronized(x){}同步代码块时呈同步效果。对象类:package test;/** * @Author LiBinquan */public class MyObject {}方法类:package test;/** * @Author LiBinquan */public class Servic...

2020-05-06 10:28:33 69

原创 多线程之synchronized同步语句块(2)

1.synchronized代码块的同步性在使用同步synchronized(this)代码块时需要注意的是,当一个线程访问object的一个synchronized(this)同步代码块时,其它线程对同一个object中所有气他synchronized(this)同步代码块的访问将被阻塞,这说明synchronized使用的“对象监视器”是同一个。测试用例如下package test;...

2020-05-05 15:32:00 141

原创 多线程之synchronized同步语句块(1)

用关键字synchronized声明方法在某些情况下是有弊端的,比如A线程调用公布方法执行一个长时间的任务,那么B线程则必须等待比较长时间。在这样的情况下可以使用synchronized同步语句块来解决。1.synchronized方法的弊端我们来证明一下synchronized关键字声明方法是有弊端的。代码示例:方法类:package test;/** * @Author LiB...

2020-05-04 10:44:37 177

原创 多线程之synchronized使用

之前几个文章中我已经说明了”线程安全“和”非线程安全“。”非线程安全“其实会在多个线程对同一个对象中的实例变量进行并发访问时发生,产生的后果就是”脏读“,也就是取到的数据其实是被更改过得。而”线程安全“就是以获得的实例变量的值是进过同步处理的,不会出现藏独的现象。1.方法内的变量为线程安全”非线程安全“问题存在于”实例变量“中,如果是方法内部的私有变量,则不存在”非线程安全“问题,所得结果也...

2020-05-03 13:05:36 313

原创 多线程之守护线程Daemon的应用

在Java线程中有两种线程,一种是用户线程,另一种是守护线程。守护线程是一种特殊的线程,它的特性是”陪伴“的含义, 当进程中不存在非守护线程了,则守护线程自动销毁了。典型的守护线程就是垃圾回收线程,当进程中没有飞守护线程了,则垃圾回收线程 也就没有存在的必要了,自动销毁。用个比较通俗的比喻来解释一下”守护线程“:任何一个守护线程都是整个JVM中所有非守护线程的”保姆“,只要当前JVM实例中存在任...

2020-05-03 10:03:39 273

原创 多线程之线程的优先级

在操作系统中,线程可以划分优先级,优先级较高的线程得到的CPU资源较多,也就是CPU优先执行优先级较高的线程对象中的任务。我们在设置线程优先级有助于帮“线程规划器”确定在下一次选择哪一个线程来优先执行。设置线程优先级使用setPriority()方法,此方法在JDK的源码如下: /** * Changes the priority of this thread. *...

2020-05-02 11:41:24 542

原创 多线程 -------方法 yield()

这边补充说明方法yieldyield()方法的作用是放弃当前的CPU资源,将它让给其他的任务去占用CPU执行时间。但放弃的时间不确定,有可能刚刚放弃,马上获得CPU时间片。时间片即CPU分配给各个程序的时间,每个线程被分配一个时间段,称作它的时间片,即该进程允许运行的时间,使各个程序从表面上看是同时进行的。如果在时间片结束时进程还在运行,则CPU将被剥夺并分配给另一个进程。如果进程在时间片结...

2020-04-30 14:28:58 158

原创 多线程之线程暂停

暂停线程意味着此线程还可以恢复运行。在Java多线程中,可以使用suspend()方法暂停线程,使用resume()方法恢复线程执行。1.suspend与resume方法的使用这边我将通过示例 来讲述:package test;/** * @Author LiBinquan */public class ThreadTest extends Thread{ private ...

2020-04-29 16:10:30 1332 1

原创 多线程之线程停止

主要会讲述java中如何更好的停止一个线程

2020-04-29 11:22:40 254

原创 多线程之currentThread()、isAlive()、sleep()、getId()方法的用法

1.currentThread()2.isAlive()3.sleep()4.getId()

2020-04-27 09:46:47 432

原创 多线程之实例变量与线程安全以及输出异常

1.实例变量2.线程安全3.System.out.println()异常

2020-04-26 14:16:47 143

原创 使用多线程之实现Runnable接口

实现Runnable

2020-04-26 09:56:38 247

原创 初步使用多线程之继承Thread类

多线程的使用基础初步使用多线程之继承Thread类继承Thread类初步使用多线程之继承Thread类一个进程正在运行时至少会有1个线程在运行,这种情况在Java中也是存在的。这些线程在后台默默地执行,比如调用 public.static void main() 方法的线程就是这样的,而且它是由JVM创建的。举例一个package test;public class Test { p...

2020-04-24 17:03:19 138

原创 进程与线程概念及线程的优点

第一次写技术博客,先聊一聊进程和线程进程 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。初看这段文字估计大家都没有对进程的一个具...

2020-04-24 15:26:38 156

gcc 依赖.zip

cenOS 6.5 和 cenOS 7 gcc 最全依赖 gcc安装包,安装文件为rpm文件,进入文件夹下通过rpm -ivh *.rpm安装。

2020-06-03

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除