多线程
_Emily
这个作者很懒,什么都没留下…
展开
-
多线程编程(三)--创建线程之Thread VS Runnable
前面写过一篇基础的创建多线程的博文:http://blog.csdn.net/liutengteng130/article/details/20036517 那么本篇博文主要来对比一下这两种创建线程的区别。 继承Thread类: 还拿上篇博客的例子来说: 四个线程各自卖各自的票,说明四个线程之间没有共享,是独立的线程。每原创 2015-06-27 20:41:39 · 2802 阅读 · 6 评论 -
多线程编程(一)--进程和线程之由来
Java多线程基础:进程和线程之由来 在前面,已经介绍了Java的基础知识,现在我们来讨论一点稍微难一点的问题:Java并发编程。当然,Java并发编程涉及到很多方面的内容,不是一朝一夕就能够融会贯通使用的,需要在实践中不断积累。由于并发肯定涉及到多线程,因此在进入并发编程主题之前,我们先来了解一下进程和线程的由来,这对后面对并发编程的理解将会有很大的帮助。 下面是本文的目录大转载 2015-06-27 15:42:35 · 1396 阅读 · 5 评论 -
多线程编程(二)--进程&&线程
看完上篇博文的介绍后,大家应该大概了解进程和线程的由来。有了这样一个背景我们进一步来看一下线程和进程。 引入进程:进程可以提高系统的并发性,提高CPU的使用率,从而提高程序的性能。在以前单道操作系统中,一次只执行一个程序,这样执行效率很低,资源得不到充分的利用。所以后来多道操作系统出现了,由于多道操作系统一次并发执行很多程序,但管理起来非常麻烦。因此进程的概念就被提出来了,它是一个程序动态原创 2015-06-27 19:27:55 · 1327 阅读 · 5 评论 -
多线程编程(六)--Callable&Future
Thread类和Runnable接口和Java内存管理模型使得多线程编程简单直接。但是Thread类和Runnable接口都不允许声明检查型异常,也不能定义返回值。 Callable接口和Future接口的引入以及它们对线程池的支持优雅的解决了这两个问题。 Callable接口类似于Runnable接口,Callable接口被线程执行后,可原创 2015-06-29 08:09:37 · 2518 阅读 · 6 评论 -
多线程编程(四)--线程同步
当使用多个线程来访问同一个数据时,就容易出现线程安全的问题。例如,银行取钱。当我们去自动取款机取钱时,正好另一个人转账,即多个线程修改同一数据,这时就容易出现线程安全问题。 线程安全 /** * 账户类,该类封装了账户编号和余额两个属性 * @author Emily-T * */ public class Account { //账户编号 private String原创 2015-06-28 10:48:21 · 2480 阅读 · 7 评论 -
多线程编程(五)--线程池
JDK 1.5之后加入了Java.util.concurrent包,这个包中主要介绍java中线程以及线程池的使用。为我们在开发中处理线程的问题提供了非常大的帮助。 一、池的由来 拿数据库来举例子:每当一个请求到达就创建一个新的链接,但当有大量请求并发访问时,就会不断地创建和销毁链接,开销很大。为了提高效率,达到复用的效果,就有了池的概念。 线程原创 2015-06-29 08:09:01 · 2840 阅读 · 6 评论 -
【Java并发】相关概念
一.概念 1、 为什么要并发? 比如因为IO操作遇到了阻塞,CPU可以转去执行其他线程,这时并发的优点就显示出来了:更高效的利用CPU,提高程序的响应速度。 Java的线程机制是抢占式的,会为每个线程分配时间片。2、 并行与并发 1) 并发就是在单核处理中同时处理多个任务。(这里的同时指的是逻辑上的同时) 2) 并行就是在多核处理器中同时处理多个任务。(这原创 2017-06-30 13:40:59 · 1050 阅读 · 4 评论 -
【Java并发】Java内存模型和线程安全
Java内存模型1、原子性 指一个操作是不可中断的,即使实在多个线程一起执行的时候,一个操作一旦开始,就不会被其它线程干扰。 i++是原子操作吗? 答案是否定的,两个线程对i++进行操作,线程1读到i++为2,线程2也进行操作读到i++为2,最终i=2,但是两个线程同时对i++进行操作,i应该为3的,所以i++并不是原子操作,不满足原子特性。2、有序性: 程序实际执行的顺序和你实际书写的顺序原创 2017-06-30 16:41:32 · 1207 阅读 · 2 评论