
跟着张老师学Java线程
线程是程序中一个单一的顺序控制流程。进程内一个相对独立的、可调度的执行单元,是系统独立调度和分派CPU的基本单位指运行中的程序的调度单位。在单个程序中同时运行多个线程完成不同的工作,称为多线程。
RelievedAbility
行成于思 而毁于随
展开
-
十:Callable和Future
前记上一篇温习的是java5中的线程池的知识,这次是来温习带返回值的Callable和Future知识。场景及代码由于FutureTask实现了两个接口,Runnable和Future,所以它既可以作为Runnable被线程执行,又可以作为Future得到Callable的返回值,那么这个组合的使用有什么好处呢?假设有一个很耗时的返回值需要计算,并且这个返回值不是立刻需要的话,那么就可以使用这个组合原创 2016-07-30 09:43:16 · 645 阅读 · 0 评论 -
九:java中的线程池
前记上一篇温习的是ThreadLocal共享复杂数据的情况,这次是来温习java5中的线程池的知识。场景及代码线程池与Executors类的使用package com.test.thread;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.conc原创 2016-07-25 22:16:58 · 631 阅读 · 0 评论 -
八:多个线程访问共享对象和数据的方式
前记上一篇温习的是ThreadLocal共享复杂数据的情况,这次是来温习多个线程访问共享对象和数据的方式。对应网上设计四个线程,其中两个线程对数据每次进行加1操作,另外两个线程对于数据每次进行减1的操作。场景及代码对应网上设计四个线程,其中两个线程对数据每次进行加1操作,另外两个线程对于数据每次进行减1的操作。/** * */package com.test.thread;/********原创 2016-07-24 21:47:59 · 1052 阅读 · 0 评论 -
七:java中ThreadLocal共享复杂数据
前记上一篇温习的是java中线程范围内的共享变量的ThreadLocal方式实现,这次来温习ThreadLocal共享复杂数据的情况场景及代码项目当中往往遇到需要共享的不是一个简单的基本数据类型,而是复杂类型,这个时候我们的代码应该怎么写才够优雅呢? 非优雅模式package com.web.thread;import java.util.Random;/*********************原创 2016-03-16 17:33:26 · 641 阅读 · 0 评论 -
六:java中线程范围内共享变量--ThreadLocal
前记上一篇温习的是java中线程范围内的共享变量的map方式实现,这次来温习ThreadLocal方式场景及代码package com.web.thread;import java.util.Random;/*********************************************************************************//* Copyright (原创 2016-03-16 17:06:45 · 682 阅读 · 0 评论 -
五:java中线程范围内共享变量--Map实现
前记上一篇温习的是java中传统的线程的同步与通信,这次来温习线程范围内的共享变量场景及代码首先我们有一种这样的场景,我在一个流程当中的各步骤中从每个线程中拿到的数据是一致的,每个线程之间的可能是不一样的,也就是要拿到和线程有关的变量数据。 下面是我们初始想到的代码,但是结果却和我们的需求有点出入package com.web.thread;import java.util.Random;/***原创 2016-03-16 15:50:46 · 2999 阅读 · 0 评论 -
四:java中传统线程同步与通信
前记上一篇温习的是java中传统线程互斥,这次来温习java中传统的线程的同步与通信场景及代码子线程循环12次,接着主线程循环88,接着又回到子线程循环12次,接着再回到主线程又循环88,如此循环50次.思路如下 /** * 思路: * 首先实现内层子线程循环12次,主线程循环88次,外层都是50次 * 发现要把两个内层循环的内原创 2016-03-07 08:17:25 · 675 阅读 · 0 评论 -
三:java中传统线程互斥
前记上一篇温习的是java中传统定时器,这次来温习java中传统的线程互斥场景及代码我们用一个方法去遍历数组中的所有元素,代码如下class ArrayUtil{ public void traversalArray(String [] param){ for (int i = 0; i < param.length; i++) {原创 2016-02-22 15:04:39 · 754 阅读 · 0 评论 -
二:java传统定时器Timer
前记上一篇温习的是java中线程的创建,这次来温习java中传统定时器Timer的使用,现在除了传统的定时器,我们在框架中经常用的定时器框架有quartz等。代码package com.thread.test;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Timer;import java.ut原创 2016-02-22 14:47:39 · 822 阅读 · 0 评论 -
一:java传统线程创建
前记最近在温习线程,同时也温习之前传智播客张孝祥老师关于线程的视频,在此将课程温习的相关代码记录一下供后期学习、查阅使用,好了废话不多说,直接代码代码传统创建线程的方法如下package com.thread.test;/*********************************************************************************//* Copy原创 2016-02-22 14:38:18 · 681 阅读 · 0 评论