
多线程
toMatser
调试的错误就是编程给你最好的东西,因为在每个错误上面都标志着前进的一步。
---不忘初心方得始终
展开
-
Lock和synchronized之间的那点事
一.synchronized的缺陷 synchronized是java中的一个关键字,也就是说是Java语言内置的特性。那么为什么会出现Lock呢? 在上面一篇文章中,我们了解到如果一个代码块被synchronized修饰了,当一个线程获取了对应的锁,并执行该代码块时,其他线程便只能一直等待,等待获取锁的线程释放锁,而这里获取锁的线程释放锁只会有两种情况: 1)获取锁转载 2017-03-03 14:29:33 · 585 阅读 · 0 评论 -
java并发学习之BlockingQueue实现生产者消费者
1.介绍 阻塞队列 (BlockingQueue)是Java util.concurrent包下重要的数据结构,BlockingQueue提供了线程安全的队列访问方式:当阻塞队列进行插入数据时,如果队列已满,线程将会阻塞等待直到队列非满;从阻塞队列取数据时,如果队列已空,线程将会阻塞等待直到队列非空。并发包下很多高级同步类的实现都是基于BlockingQueue实现的。JDK7提供原创 2017-03-03 11:05:57 · 9585 阅读 · 1 评论 -
java多线程之火车售票系统模拟
1.前言为了学习多线程共享与通信,我们模拟一个火车售票系统,假设有10张火车票,三个窗口(也就是三个线程)同时进项售票。2.非同步代码package com.tl.skyLine.thread;/** * Created by tl on 17/3/6. */public class SellTicket { public static void main(Stri原创 2017-03-06 14:58:11 · 18237 阅读 · 4 评论 -
java多线程学习之死锁的模拟和避免
1.死锁死锁是这样一种情形:多个线程同时被阻塞,它们中的一个或者全部都在等待某个资源被释放。由于线程被无限期地阻塞,因此程序不可能正常终止。Java 死锁产生的四个必要条件: 1、互斥使用,即当资源被一个线程使用(占有)时,别的线程不能使用 2、不可抢占,资源请求者不能强制从资源占有者手中夺取资源,资源只能由资源占有者主动释放。 3、请求和保持,即当资原创 2017-03-03 16:45:01 · 934 阅读 · 1 评论 -
java多线程学习之线程池
1.介绍多线程技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力。 假设一个服务器完成一项任务所需时间为:T1 创建线程时间,T2 在线程中执行任务的时间,T3 销毁线程时间,当T1 + T3 远大于 T2,则可以采用线程池,可以提高服务器性能。 在Java 5之后,并发编程引入了一堆新的启动、调度和管理线程的API。Executor框架便原创 2017-03-24 15:03:12 · 609 阅读 · 0 评论 -
java多线程面试汇总
1.线程是什么线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。Java中,每个线程都有一个调用栈,即使不在程序中创建任何新的线程,线程也在后台运行着。一个Java应用总是从main()方法开始运行,mian()方法运行在一个线程内,它被称为主线程。一旦创建一个新的线程,就产生一个新的调用栈。线程总体分两类:用户线程和守候线程。当所有用户线程原创 2017-03-02 17:57:16 · 644 阅读 · 0 评论