IO的方式通常分为几种,同步阻塞的BIO、同步非阻塞的NIO、异步非阻塞的AIO。 一、BIO 在JDK1.4出来之前,我们建立网络连接的时候采用BIO模式,需要先在服务端启动一个ServerSocket,然后在客户端启动Socket来对服务端进行通信,默认情况下服务端需要对每个请求建立一堆线程等待 ...
分类:
其他好文 时间:
2017-08-16 00:45:00
阅读次数:
182
IO的方式通常分为几种,同步阻塞的BIO、同步非阻塞的NIO、异步非阻塞的AIO。 一、BIO 在JDK1.4出来之前,我们建立网络连接的时候采用BIO模式,需要先在服务端启动一个ServerSocket,然后在客户端启动Socket来对服务端进行通信,默认情况下服务端需要对每个请求建立一堆线程等待 ...
分类:
其他好文 时间:
2017-08-15 13:24:27
阅读次数:
157
ThreadPool 类 提供一个线程池,该线程池可用于执行任务、发送工作项、处理异步 I/O、代表其他线程等待以及处理计时器。 提供一个线程池,该线程池可用于执行任务、发送工作项、处理异步 I/O、代表其他线程等待以及处理计时器。 命名空间: System.Threading程序集: mscorl ...
分类:
Web程序 时间:
2017-08-12 10:30:02
阅读次数:
526
给出一个问题,如下: 解决方案如下: 执行这段代码发现问题,就是同一张票号可能被多个售票窗口出售,惹祸的代码就是if else语句块。 解决方法就是在需要同步的代码段用synchronized(Object){你要同步的代码}即可。 修改后代码如下: 执行这段代码发现出票正常了。 线程1正执行需要做 ...
分类:
编程语言 时间:
2017-08-08 22:53:42
阅读次数:
133
1、等待多线程完成的CountDownLatch CountDownLatch允许一个或多个线程等待其他线程完成操作。join用于让当前执行线程等待join线程执行结束。其实现原理是不停检查join线程是否存活,如果join线程存活则让当前线程永远等待。直到join线程中止后,线程的this.not ...
分类:
编程语言 时间:
2017-08-05 22:00:00
阅读次数:
134
一、使用threading模块多线程执行 以上代码运行结果 二、使用Thread子类完成创建多线程 如果多个线程执行的都是同一个函数,各自之间不会有影响 主线程等待所有子进程结束之后才结束 以上代码运行结果: 三、线程的执行顺序 以上代码运行结果: 四、多线程全局变量共享 以上代码运行结果: ...
分类:
编程语言 时间:
2017-08-04 22:55:36
阅读次数:
191
一、为什么要引入线程 进程是为了提高CPU的执行效率,减少因程序等待带来的CPU空转以及其他计算机软硬件资源而提出来的。进程是一个资源拥有者,因而在进程的创建、撤消和切换中,系统必须为之付出较大的时空开销。也正因为如此,在系统中所设置的进程数目不宜过多,进程切换的频率也不宜太高,但这也就限制了并发程 ...
分类:
编程语言 时间:
2017-08-04 01:10:01
阅读次数:
253
今天我们继续接着线程讲讲,上一章提到一下task概念, 首先接着task继续往下讲,在前章节提到过Thread怎么实现其他线程完成后再让主线程继续执行的功能,那么如果Task也需要线程等待事件,该怎么实现呢? 在这里介绍四种方法。 1、ContinueWhenAny方法 这种做法是在等task对象l ...
分类:
编程语言 时间:
2017-08-04 00:29:27
阅读次数:
241
死锁: 在多线程竞争使用共享资源的情况下。就有可能出现死锁的情况。比方,当一个线程等待还有一个线程所持有的锁时。那个线程又可能在等待第一个线程所持有的锁。此时。这两个线程会陷入无休止的相互等待状态。这样的情况就称为死锁。 产生死锁的四个必要条件: 1、相互排斥条件。进程对所分配的资源进行排它性控制, ...
分类:
编程语言 时间:
2017-08-03 20:21:15
阅读次数:
139
Lock的使用 前言:本系列将从零开始讲解java多线程相关的技术,内容参考于《java多线程核心技术》与《java并发编程实战》等相关资料,希望站在巨人的肩膀上,再通过我的理解能让知识更加简单易懂。 目录 认识cpu、核心与线程 java多线程系列(一)之java多线程技能 java多线程系列(二 ...
分类:
编程语言 时间:
2017-08-02 21:04:26
阅读次数:
268