多线程
文章平均质量分 93
kongmin_123
每天进步一点点。
展开
-
线程基础
1.进程和线程 提到线程,就不得不提及和它相关的另一个概念:进程。进程是程序在一个数据集合上的一次动态执行的过程,是系统进行资源调度和分配的独立单位。进程对应代码从加载、执行至执行完毕的完整过程。我们可以将一个正在操作系统中运行的exe程序理解成是一个进程。打开“Windows任务管理器”就可以查看到正在运行的各个进程。 线程是比进程更小的执行单位,它是进程中独立运行...原创 2018-07-15 21:56:07 · 293 阅读 · 0 评论 -
线程间通信
线程和线程之间不是独立的个体,它们彼此之间可以互相通信和协作。线程通信就是在线程之间传递信息,保证他们能够协同工作。在线程间进行通信后,系统之间的交互性会更强大,在大大提高CPU利用率的同时还会使程序员对各线程任务的处理过程进行有效的把控与监督。1.等待/通知机制(1)不使用等待/通知实现线程间通信如果不使用线程间的通信机制,两个线程想要根据同一个数据实现通信的话,就必须使用whi...原创 2018-08-23 16:50:41 · 216 阅读 · 0 评论 -
线程安全
1.线程安全概述使用多线程可以在一段时间内并发处理多个任务,在提高CPU运行效率的同时也为我们批量处理这些任务带来了便利。但是,使用多线程的时候要格外小心,多个线程在某一时间对同一个变量的处理,如果处理不当,就会造成数据不一致的问题,出现的这种数据不一致的现象就是非线程安全。非线程安全是多线程才会出现的问题。上面的情况只是非线程安全的一种。非线程安全出现的原因是各个线程的控制流彼此独立,线...原创 2018-08-24 19:45:01 · 336 阅读 · 0 评论 -
单例模式与多线程
单例模式是设计模式的一种,在应用中也是比较常见的。单例模式本身是比较简单的,但是如果使用在多线程环境时,就会造成一些意想不到的情况。多线程的应用现在也很普及,因此有必要了解单例模式在多线程环境下使用时会遇到的问题,以及使用多线程技术如何解决这些问题。当单例模式应用在多线程环境中,我们要考虑的是:如何使单例模式遇到多线程时是安全的,正确的。下面介绍单例模式结合多线程技术在使用时的相关知识。...原创 2018-08-23 15:03:32 · 1124 阅读 · 1 评论 -
ReentrantLock和ReentrantReadWriteLock类的使用
在Java中,可以使用synchronized关键字实现线程之间同步互斥,除此以外,JDK中的Lock对象也能实现同步的效果,而且在使用上更加方便灵活,扩展功能也更加强大。常用的两个Lock类为ReentrantLock和ReentrantReadWriteLock。ReentrantLock类在功能上相比synchronized关键字更多。下面先介绍一下ReentrantLock类的使用...原创 2018-08-24 19:44:04 · 654 阅读 · 0 评论 -
关键字volatile的使用
关键字volatile的作用主要有两个。1.关键字volatile使变量在多个线程间可见Java内存模型分为工作内存和主内存。工作内存是线程的私有堆栈,主内存是所有线程共享的公共堆栈。根据Java的内存的内存模型,一个变量会存在公共堆栈和线程的私有堆栈中。每次变量的最新值都是公共变量的值,不使用volitale时取得的可能是私有堆栈中的值,私有堆栈的值在读取之前需要和公共堆栈的值进行同步,...原创 2018-08-23 15:16:53 · 357 阅读 · 0 评论 -
和线程状态有关的方法
1.线程生命周期和进程一样,线程也是有生命周期的,线程生命周期要经过新建(New)、就绪(Runnable)、运行(Running)、阻塞(Bolcked)、死亡(Dead)5种状态,这些状态不总是顺序执行的,各个状态及其之间的转换要调用所需的方法来实现。线程的调度是JVM的一部分,在一个CPU的机器上,一个线程启动之后,一次只能运行一个线程,它不可能一直占着CPU运行,所以CPU需要在多个线...原创 2018-07-22 11:49:28 · 837 阅读 · 0 评论 -
关键字synchronized的使用
为了解决非线程安全问题,就需要使用线程同步。实现线程同步的一种方式就是使用synchronized关键字。1.synchronized的用法(1)synchronized可以修饰方法,表示这个方法在任意时刻只能由一个线程访问。(2)synchronized用在类声明中,表明该类中的所有方法都是synchronized的。(3)synchronized还可以用在一段代码中,被sync...原创 2018-08-23 16:45:06 · 873 阅读 · 0 评论 -
线程中的常用方法
1.线程方法概述线程类Thead有很多方法方便我们调用,可以通过查看Java API找到线程中的所有方法。下面介绍一些线程中的常用方法。2.线程中的基本方法(1)public long getId( )该方法返回此线程的唯一ID,线程ID是线程的标识符。它是一个正的 long 数,在创建该线程时生成,如主线程的id通常为1。 虽然线程ID唯一,但并非终生不变。线程终止时,该线程 I...原创 2018-07-22 11:49:05 · 1989 阅读 · 0 评论 -
ThreadLocal类的使用
线程中变量值的共享可以使用public static变量的形式,所有的线程都使用同一个public static变量。那么如果想实现每一个线程都有自己的私有共享变量该怎么实现?可以使用Java的JDK中提供的ThreadLocal类实现这样的功能。ThreadLocal类主要解决的就是每个线程绑定自己的值,可以将ThreadLocal类比喻成全局存放数据的盒子,盒子中可以存储每个线程的私有数据...原创 2018-08-23 17:33:48 · 292 阅读 · 0 评论