Java的多线程--线程的概念一个程序同时执行多个任务,通常,每个任务称之为线程(thread),她是线程控制的简称。可以运行一个以上的任务的程序叫做多线程程序。1.感觉线程和进程很像,那么他们的区别是什么?其实他们是有本质的区别:每个进程拥有自己独立的一整套变量,而线程则共享数据。2.在Jav.....
分类:
编程语言 时间:
2014-05-23 04:19:53
阅读次数:
226
1. 深入synchronized关键字 1 class Service{ 2 public void
fun1(){ 3 synchronized(this){ 4 try{ 5 Thread.sleep(3000);...
分类:
其他好文 时间:
2014-05-23 03:28:22
阅读次数:
230
在开发多线程的程序的时候接触了.NET里面的自旋。这个自旋可以将线程暂停指定的时间,而使用Sleep的话,则是让线程执行无意义的内耗循环。
如下图:
Threading.Thread.Sleep 1000
------------[开始Sleep]---CPU在该线程上循环执行空指令,并且检查时间是否达到延时设定---------------[时间到达,接触延时,继续执行程序]---...
分类:
编程语言 时间:
2014-05-22 18:44:12
阅读次数:
415
在java中可有两种方式实现多线程,一种是继承
Thread类,一种是实现Runnable接口;Thread类是在java.lang包中定义的。一个类只要继承了Thread类同时覆写了本类中的
run()方法就可以实现多线程操作了,但是一个类只能继承一个父类,这是此方法的局限, 下面看例子: p.....
分类:
其他好文 时间:
2014-05-21 18:57:11
阅读次数:
249
Subsections
线程安全(Thread safety)
锁(lock)
共享对象
对象组合
基础构建模块
任务执行
取消和关闭
线程池的使用
性能与可伸缩性
并发程序的测试
显示锁
原子变量和非阻塞同步机制
一、线程安全(Thread safety)
无论何时,只要多于一个线程访问给定的状态变量。而且其中某个线程会写入该变量,此时必须使用同...
分类:
编程语言 时间:
2014-05-21 17:11:45
阅读次数:
500
TLS(Thread Local Storage) 线程局部存储
所有的线程都共享着进程的虚拟地址~ 局部变量为每个线程所独立共享的,静态变量和全局变量是进程中所有线程一起共享的~ TLS可以为线程提供一个唯一的数据用一个全局的索引~每个线程 有自己的副本~各个线程互不影响~其实所保存的数据就是线程关联的~
先看个图:
如图可见每个线程有自己独立的TLS表格,相当于一个数组...
分类:
编程语言 时间:
2014-05-21 16:45:55
阅读次数:
339
接上文
遗留问题
对于Java多线程的理解,我以前仅仅局限于实现Runnable接口或者继承Thread类,然后重写run()方法,最后start()调用就算完事,但是一旦涉及死锁以及对共享资源的访问和随时监控线程的状态和执行顺序和线程返回值等就不行了。
Callable 和 Future 简介
Callable接口代表一段可以调用并返回结果的代码;Future接口表示是执行异步任务...
分类:
移动开发 时间:
2014-05-21 13:40:13
阅读次数:
371
There are two types of non-blocking thread synchronization algorithms
- lock-free, and wait-free. Their meaning is often confused. In lock-free systems, while any particular computation may be block...
分类:
其他好文 时间:
2014-05-21 10:27:20
阅读次数:
410
从多任务OS开始,线程主要用来表示IO异步;而今随着4G和多核等的到来,计算密集型又热门起来了。
硬件价格和性能从低到高:
PC/Laptop multi core, memory shared
PC clusters
SuperComputers
假设一个理想并行计算机:每个处理器计算能力相同,忽略调度,
static thread 是对一个虚拟处理器的软件层面的抽象;
s...
分类:
其他好文 时间:
2014-05-21 08:17:39
阅读次数:
326
Java线程(Java Thread)是执行某些任务的一种轻量级进程。Java中的Thread类提供了多线程(multi-threading)功能,应用程序可以创建多个线程并同时运行。
在一个应用程序中,通常会有两种类型的线程-用户线程(user thread)和守护线程(daemon thread)。当我们启动引用程序时,首先创建用户线程main,我们可以创建多个用户线程和守护线程。当...
分类:
编程语言 时间:
2014-05-21 07:26:06
阅读次数:
370