1. 概念 线程池主要是通过Executors这个类来创建 返回的是ExecutorService对象2.固定大小线程池 例子:创建固定线程数目为3的线程池package org.lkl.thead.foo.threadpool;import java.util.concurrent.Execu.....
分类:
编程语言 时间:
2014-06-28 22:42:01
阅读次数:
414
在使用多线程的时候,往往存在一定的公共数据,为了避免多个线程同时操作同一数据,我们需要为线程加锁。加锁的原理:每一个引用类型的对象都有一个同步索引块,指示当前使用该对象的线程数,每个线程执行到Lock语句块的时候就会判断当前锁定项(这里是this,当前窗体对象)的同步索引块是否等于0(即没有线程.....
分类:
编程语言 时间:
2014-06-28 18:33:22
阅读次数:
192
一、如果是每个线程都执行相同的代码,则可以使用同一个Runnable来实现共享public class MultiThreadShareData {
public static void main(String[] args) {
new Thread(new ShareData()).start();
new Thread(new ShareData()).start();
}
...
分类:
移动开发 时间:
2014-06-20 13:07:10
阅读次数:
260
debug三天之后,在今天终于发现了自己开的两个线程(一个接收数据,一个处理数据)所处理的数据并不相等。用compare比较后发现数据有所偏差,处理线程的数据存成文件之后隔一段都要比接收线程少一点。少的频率跟线程之间的切换次数又有关系,这就让人直接怀疑是不是内存拷贝发生了错误,结果查了所有的语句都没发现问题,最后突然想到多线程在数据拷贝的过程中一旦遇到线程切换会导致不确定的因素发生,于是在线程拷贝...
分类:
编程语言 时间:
2014-06-20 11:10:41
阅读次数:
166
多线程数据同步错误比较难检测,因为通常是与事件的特定发生顺序有关。
一、同步术语
Barrier(屏障)
barrier是多个Thread的集合点:所有的Thread都应该到齐在这个barrier之后才能允许它们继续下去。
Condition variable(条件变量)
实际上不是变量,而是与某个lock有关联的变量。
Event variable(事件变...
分类:
编程语言 时间:
2014-06-18 06:23:12
阅读次数:
356
WINDOWS操作系统中可以允许最大的线程数默认情况下,一个线程的栈要预留1M的内存空间而一个进程中可用的内存空间只有2G,所以理论上一个进程中最多可以开2048个线程但是内存当然不可能完全拿来作线程的栈,所以实际数目要比这个值要小。你也可以通过连接时修改默认栈大小,将其改的比较小,这样就可以多开一...
分类:
编程语言 时间:
2014-06-12 20:35:13
阅读次数:
374
A和B需要共享同一线程,同样的另一组A和B共享另一组线程,A和B相互之间不受影响。...
分类:
编程语言 时间:
2014-06-10 10:56:32
阅读次数:
232
运行bin/jmeter.bat后,先来了解几个术语:
1、线程组:测试里每个任务都要线程去处理,所有我们后来的任务必须在线程组下面创建。可以在“测试计划->添加->线程组”来建立它,然后在线程组面板里有几个输入栏:线程数、Ramp-Up
Period(in seconds)、循环次数,其中Ram....
分类:
其他好文 时间:
2014-06-05 19:21:13
阅读次数:
330
线程池实现:
用于执行大量相对短暂的任务
当任务增加的时候能够动态的增加线程池中线程的数量直到达到一个阈值。
当任务执行完毕的时候,能够动态的销毁线程池中的线程
该线程池的实现本质上也是生产者与消费模型的应用。生产者线程向任务队列中添加任务,一旦队列有任务到来,如果有等待线程就唤醒来执行任务,如果没有等待线程并且线程数没有达到阈值,就创建新线程来执行任务。...
分类:
编程语言 时间:
2014-06-05 09:33:14
阅读次数:
262