
多线程
文章平均质量分 75
犀利的蛙
安安
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
多线程 (multithreaded)介绍
了解计算机的人都知道,系统我们可以同一时刻运行多个程序,还能了解 多个CPU(双核,多核心)等称呼。这里简单记录一下 信息。 进程:当我们运行一个程序,比如QQ 等工具,那么这就算是一个进程,你在win 环境下,对任务栏,点击右键,打开任务管理器,就能看见你自己打开的进程,也叫一个任务。 多进程:这个类似,比如你可以开打QQ,同时打开魔兽,也就多个任务,就是多进...原创 2013-03-29 10:18:33 · 1314 阅读 · 0 评论 -
ThreadPoolExecutor 源码分析(一)-- 线程工作流程
一、序言 关于“池”的概念,我的理解是它是为了让我们更快的获得资源,节省时间,在我所知的所有池(线程池、连接池、常量池、缓存池、对象池等等),都是这个作用,这里我们仅仅分享线程池的相关理解。 1.我们什么时候要用线程池? 在JAVA 里面我们一切都是对象,线程(Thread)同样也是对象,只要是对象那么就要涉及创建、使用、回收等三个主要步骤。通常...原创 2014-04-04 13:57:56 · 180 阅读 · 0 评论 -
生产者与消费者 模型理解,与简单设计
题外话:从中秋请假到现在,接近20天的假期,让我彻底耍晕了,现在来写代码,发现始终没进入状态。以后建议大家没特殊事情,还是别请这么久啦,分开耍,有利于放松,也不至于耍得忘乎所以。我是一直想做互联网 并发 大数据方面的工作,有兴趣才有动力嘛,企业开发感觉活力不强,太多重复的劳动,还是喜欢研究 解决问题,有挑战的东东。线程这块,生产者与消费者模型一直是很经典的东东,这里我用自己的理解分享一下,有误...原创 2013-10-13 23:17:36 · 641 阅读 · 0 评论 -
源码分析--ThreadLocal
一、序言 这里会分析ThreadLocal 源码以及原理,和它的正确使用原则,还有我们应用过的地方,帮助大家更深刻的理解这个类的使用。 ThreadLocal 在JDK1.2的版本的就提供的一个类,它提供了一种新的思路去解决多线程问题,同时ThreadLocal 不是线程类,仅仅是一个线程的变量副本,他是如何来实现这个功能的呢,我们从源码进行分析。 ...2014-03-23 22:15:05 · 113 阅读 · 0 评论 -
多线程(四)--非阻塞同步,CAS 原理分析
一、序言 前面我们提到的synchronized 等锁机制是一种阻塞同步,虽然它完成了我们的原子性操作,和线程安全,但是这种阻塞同步机制是比较耗费性能的,因为在阻塞和唤醒等状态转换中,是需要CPU指令进行帮忙实现,这要的调度是比较耗时的,因此这种策略是一种悲观策略,当然我们需要线程安全,又要高效,在一定情况下我们会采用非阻塞同步机制。 二、非阻塞同...原创 2014-03-17 09:20:01 · 429 阅读 · 0 评论 -
多线程(三)--线程安全与锁
一、引言: JAVA 是一个多线程并发的语言,现在只要有点经验的JAVA程序员,对于多线程、并发等词汇相信并不陌生,但是对于具体的运行原理,很多也都没深入,这里我也分享一部分自己的经验,主要对于线程安全以及锁的一些机制原理,进行介绍。关于线程的基本知识点,前面也说过了,可以了解一下。 1.1 什么是线程安全? 这里我借“JAVA 并发实践”里面的话:当多...2014-03-13 00:03:20 · 648 阅读 · 0 评论 -
静态方法加锁,和非静态方法加锁区别
今天看了到有意思的题:在静态方法上加锁 和 非静态方法加锁 有什么区别,从而再次引出锁机制的一些理解。先看方法: // 这是一个很简单的类,里面共享静态变量 num,然后一个静态 和 非静态方法,都加上锁// 我们假设有两个线程同时操作这两个方法,那么数据能互斥吗? public class Walk { public static int num = 100; ...2013-11-13 09:43:51 · 810 阅读 · 0 评论 -
多线程-并发与锁
我们讲到多线程,就离不开并发,讲到并发,就离不开安全性,这里我们先来实现一个简单功能能:买票系统 这是票的类,以及买票的方法:public class DBTicket { // 假设存放100张票 private static int num = 100; public static void setNum(int num) { DBTicket.num = n...原创 2013-04-11 10:56:05 · 269 阅读 · 0 评论 -
多线程-常用方法(二)
线程大家都会创建,这里介绍一些常用的方法。 休眠(sleep):就和睡觉一样,假设工作是一个任务,你需要休息,因此你可以什么都不做,休息你指定的时间,接着工作。 public class MyWork implements Runnable { static int num = 24; @Override public void run() { while...原创 2013-03-29 17:31:08 · 114 阅读 · 0 评论 -
多线程-初识(一)
线程有多种实现的方式:1.实现 Runnable 接口,实现run() 方法2.继承Thread类,调用start() 方法3.实现Callable 接口,实现call() 方法,和第一种 差不多,call 方法要抛出异常,run 不会 假设,我们现在有个通知数数的任务,从1-100。 public class Advice implements Runnabl...原创 2013-03-29 10:18:48 · 125 阅读 · 0 评论 -
ThreadPoolExecutor 源码分析(二)--- 队列的应用
一、序言 上一篇,介绍了线程池的基本工作原理,这里会介绍一些里面的一些饱和策略和几个常用的线程池方法的实现原理。 二、源码分析 线程池极力推荐我们用Executors 提供车的各种工厂,来创建我们的线程池,提供了我们常用的几种创建线程池的方式: newCachedThreadPool():无界线程池,可以自己进行回收。 newFixedT...2014-04-08 18:34:28 · 121 阅读 · 0 评论