
多线程
y_index
有些人30岁就死了,但是80岁才埋
展开
-
多线程-02守护线程、状态
守护线程:Java中有两种线程,一种是用户线程,另一种是守护线程。用户线程是指用户自定义创建的线程(相当于主线程创建的),主线程停止,用户线程不会停止守护线程当进程不存在或主线程停止,守护线程也会被停止。(例如gc线程)使用setDaemon(true)方法设置为守护线程The Java Virtual Machine exits when the only threads...原创 2017-05-17 17:18:26 · 374 阅读 · 0 评论 -
多线程- 13 线程池
什么是线程池Java中的线程池是运用场景最多的并发框架,几乎所有需要异步或并发执行任务的程序都可以使用线程池。在开发过程中,合理地使用线程池能够带来3个好处。第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。第二:提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。第三:提高线程的可管理性。线程是稀缺资源,如果无限制地创建,不仅会消耗系统资源,还会...原创 2019-08-27 16:15:12 · 142 阅读 · 0 评论 -
多线程-12 并发包-并发队列
队列分为有界、无界阻塞、非阻塞ConcurrentLinkedQueue 是单向链表结构的无界并发队列。元素操作按照 FIFO (first-in-first-out 先入先出) 的顺序。适合“单生产,多消费”的场景。内存一致性遵循对ConcurrentLinkedQueue的插入操作先行发生于(happen-before)访问或移除操作。ConcurrentLinkedDeque...原创 2019-08-27 15:41:29 · 137 阅读 · 0 评论 -
多线程- 11 并发包-集合
并发包同步容器类Vector与ArrayList区别1.ArrayList是最常用的List实现类,内部是通过数组实现的,它允许对元素进行快速随机访问。数组的缺点是每个元素之间不能有间隔,当数组大小不满足时需要增加存储能力,就要讲已经有数组的数据复制到新的存储空间中。当从ArrayList的中间位置插入或者删除元素时,需要对数组进行复制、移动、代价比较高。因此,它适合随机查找和遍历,不...原创 2019-08-27 10:57:33 · 227 阅读 · 0 评论 -
多线程-10 停止线程、threadlocal
停止线程1. 使用退出标志,使线程正常退出,也就是当run方法完成后线程终止。2. 使用stop方法强行终止线程(这个方法不推荐使用,因为stop和suspend、resume一样,也可能发生不可预料的结果)。3. 使用interrupt方法中断线程。publicstaticvoid main(String[] args) { StopThre...原创 2019-08-26 16:07:07 · 412 阅读 · 0 评论 -
多线程-09 lock锁
在 jdk1.5 之后,并发包中新增了 Lock 接口(以及相关实现类)用来实现锁功能,Lock 接口提供了与 synchronized 关键字类似的同步功能,但需要在使用时手动获取锁和释放锁。Lock 接口与 synchronized 关键字的区别Lock 接口可以尝试非阻塞地获取锁 当前线程尝试获取锁。如果这一时刻锁没有被其他线程获取到,则成功获取并持有锁。Lock 接口能被中断地获...原创 2019-08-26 15:51:30 · 289 阅读 · 0 评论 -
多线程-08 多线程通讯
一、为什么要线程通信?1. 多个线程并发执行时, 在默认情况下CPU是随机切换线程的,当我们需要多个线程来共同完成一件任务, 并且我们希望他们有规律的执行, 那么多线程之间需要一些协调通信,以此来帮我们达到多线程共同操作一份数据。2.当然如果我们没有使用线程通信来使用多线程共同操作同一份数据的话,虽然可以实现, 但是在很大程度会造成多线程之间对同一共享变量的争夺,那样的话势...原创 2019-08-26 10:44:44 · 135 阅读 · 0 评论 -
多线程-07 happens-before volatile 多线程单例
Java内存模型中的happens-before是什么?为什么会有这东西的存在?定义:1、如果一个操作happens-before(之前发生)另一个操作,那么第一个操作的执行结果将对第二个操作可见,而且第一个操作的执行顺序排在第二个操作之前。2、两个操作之间存在happens-before关系,并不意味着一定要按照happens-before原则制定的顺序来执行。如果重排序之后的执行结...原创 2019-08-22 15:43:54 · 184 阅读 · 0 评论 -
多线程-06内存模型
多线程三大特性:原子性 可见性 有序性什么是原子性即一个操作或者多个操作 要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行。一个很经典的例子就是银行账户转账问题:比如从账户A向账户B转1000元,那么必然包括2个操作:从账户A减去1000元,往账户B加上1000元。这2个操作必须要具备原子性才能保证不出现一些意外的问题。我们操作数据也是如此,比如i = i+1;其...原创 2019-08-22 11:28:05 · 129 阅读 · 0 评论 -
多线程-01基础、实现
程序:可执行的软件。进程:正在运行的程序,是线程的集合。线程: 独立运行的执行路径。使用线程可以把占据时间长的程序中的任务放到后台去处理,程序的运行速度可能加快,在一些等待的任务实现上如用户输入、文件读写和网络收发数据等,线程就比较有用了。在这种情况下可以释放一些珍贵的资源如内存占用等等。如果有大量的线程,会影响性能,因为操作系统需要在它们之间切换,更多的线程需要更多的内存空...原创 2019-08-19 16:48:03 · 103 阅读 · 0 评论 -
多线程-03线程安全问题
为什么有线程安全问题?当多个线程同时共享,同一个全局变量或静态变量,做写的操作时,可能会发生数据冲突问题,也就是线程安全问题。但是做读操作是不会发生数据冲突问题。线程安全解决办法:问:如何解决多线程之间线程安全问题?答:使用多线程之间同步synchronized或使用锁(lock)。(锁在代码块执行完毕或者抛出异常之后就会释放)问:为什么使用线程同步或使用锁能解决线程安...原创 2017-05-17 17:19:57 · 234 阅读 · 0 评论