Java线程
文章平均质量分 92
kongmin_123
每天进步一点点。
展开
-
关键字synchronized的使用
为了解决非线程安全问题,就需要使用线程同步。实现线程同步的一种方式就是使用synchronized关键字。1.synchronized的用法(1)synchronized可以修饰方法,表示这个方法在任意时刻只能由一个线程访问。(2)synchronized用在类声明中,表明该类中的所有方法都是synchronized的。(3)synchronized还可以用在一段代码中,被sync...原创 2018-08-23 16:45:06 · 870 阅读 · 0 评论 -
关键字volatile的使用
关键字volatile的作用主要有两个。1.关键字volatile使变量在多个线程间可见Java内存模型分为工作内存和主内存。工作内存是线程的私有堆栈,主内存是所有线程共享的公共堆栈。根据Java的内存的内存模型,一个变量会存在公共堆栈和线程的私有堆栈中。每次变量的最新值都是公共变量的值,不使用volitale时取得的可能是私有堆栈中的值,私有堆栈的值在读取之前需要和公共堆栈的值进行同步,...原创 2018-08-23 15:16:53 · 349 阅读 · 0 评论 -
ReentrantLock和ReentrantReadWriteLock类的使用
在Java中,可以使用synchronized关键字实现线程之间同步互斥,除此以外,JDK中的Lock对象也能实现同步的效果,而且在使用上更加方便灵活,扩展功能也更加强大。常用的两个Lock类为ReentrantLock和ReentrantReadWriteLock。ReentrantLock类在功能上相比synchronized关键字更多。下面先介绍一下ReentrantLock类的使用...原创 2018-08-24 19:44:04 · 645 阅读 · 0 评论 -
单例模式与多线程
单例模式是设计模式的一种,在应用中也是比较常见的。单例模式本身是比较简单的,但是如果使用在多线程环境时,就会造成一些意想不到的情况。多线程的应用现在也很普及,因此有必要了解单例模式在多线程环境下使用时会遇到的问题,以及使用多线程技术如何解决这些问题。当单例模式应用在多线程环境中,我们要考虑的是:如何使单例模式遇到多线程时是安全的,正确的。下面介绍单例模式结合多线程技术在使用时的相关知识。...原创 2018-08-23 15:03:32 · 1101 阅读 · 1 评论 -
线程间通信
线程和线程之间不是独立的个体,它们彼此之间可以互相通信和协作。线程通信就是在线程之间传递信息,保证他们能够协同工作。在线程间进行通信后,系统之间的交互性会更强大,在大大提高CPU利用率的同时还会使程序员对各线程任务的处理过程进行有效的把控与监督。1.等待/通知机制(1)不使用等待/通知实现线程间通信如果不使用线程间的通信机制,两个线程想要根据同一个数据实现通信的话,就必须使用whi...原创 2018-08-23 16:50:41 · 201 阅读 · 0 评论 -
ThreadLocal类的使用
线程中变量值的共享可以使用public static变量的形式,所有的线程都使用同一个public static变量。那么如果想实现每一个线程都有自己的私有共享变量该怎么实现?可以使用Java的JDK中提供的ThreadLocal类实现这样的功能。ThreadLocal类主要解决的就是每个线程绑定自己的值,可以将ThreadLocal类比喻成全局存放数据的盒子,盒子中可以存储每个线程的私有数据...原创 2018-08-23 17:33:48 · 277 阅读 · 0 评论 -
线程安全
1.线程安全概述使用多线程可以在一段时间内并发处理多个任务,在提高CPU运行效率的同时也为我们批量处理这些任务带来了便利。但是,使用多线程的时候要格外小心,多个线程在某一时间对同一个变量的处理,如果处理不当,就会造成数据不一致的问题,出现的这种数据不一致的现象就是非线程安全。非线程安全是多线程才会出现的问题。上面的情况只是非线程安全的一种。非线程安全出现的原因是各个线程的控制流彼此独立,线...原创 2018-08-24 19:45:01 · 328 阅读 · 0 评论