专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅
1.关于线程安全类:不可变类总是线程安全的,而可变类的线程安全往往以降低并发性能为代价,注意只对可能导致资源竞争的代码进行synchronized,并且在需要提供单线程和多线程两个环境下通过继承和覆盖而在内部建立采用同步机制的内部类。2.以下情况持有锁的线程会释放锁:执行完同步代码块执行同步代码块中,遇到异常导致线程终止。执行同步代码块中,执行了锁对象所属的wait()方法。 而以下情况线程是不会释放锁的:执行同步代码块中,执行了Thread.sleep()方法,当前线程线程放弃CPU,开始睡眠,但是不会释放锁。执行同步代码块中,执行了Thread.yield()方法,当前线程线 [阅读全文] [PDF]
1.调节各个线程的优先级Thread类中的setPriority(int)和getPriority()方法可以设置和获取线程的优先级。优先级用整数表示。取值范围为1-10.Thread有三个静态变量:MAX_PRIORITY :取值为10,最高。MIN_PRIORITY:取值为1,最低。NORM_PRIORITY:取值为5,默认。主线程默认的优先级为5,若A线程创建了B线程,则B和A有同样的优先级。值得注意的是,在实际的OS中,JVM的优先级没有得到很好的映射,若对程序的可移植性有高的要求的话,那么应该确保在设置线程优先级时只使用上述三个静态变量。2.线程睡眠:使用sleep()方 [阅读全文] [PDF]
任何实现了Runnable接口的类都可以创建线程。这是为了弥补JAVA中单继承的特性。同样的例子我们使用对Runnable接口的实现进行重写,三部曲:创建一个实现Runnable接口的类的实例,创建和其联系的线程,启动线程。public class RunnableDemo1 implements Runnable { String name; int count; int delay; public static void main(String arg[]) { RunnableDemo1 one = new RunnableDemo1(" [阅读全文] [PDF]
任何继承了Thread的类都可以创立单独的线程public class ThreadDemo1 extends Thread { private String name; private int count; private int delay; public static void main(String arg[]) { ThreadDemo1 one = new ThreadDemo1("one",1000,2); one.start();//发起一个线程 ThreadDemo1 two = new Threa [阅读全文] [PDF]
线程是进程的一条执行路径,它包含独立的堆栈和CPU寄存器状态,每个线程共享所有的进程资源,包括打开的文件、信号标识及动态分配的内存等。一个进程内的所有线程使用同一个地址空间,而这些线程的执行由系统调度程序控制,调度程序决定哪个线程可执行以及什么时候执行线程。线程有优先级别,优先权较低的线程必须等到优先权较高的线程执行完后再执行。在多处理器的机器上,调度程序可将多个线程放到不同的处理器上去运行,这样可使处理器任务平衡,并提高系统的运行效率。Windows是一种多任务的操作系统,在Windows的一个进程内包含一个或多个线程。32位Windows环境下的Win32 API提供了多线程应 [阅读全文] [PDF]
  本文首先讨论16位Windows下不具备线程概念然后着重讲述在32位Windows 95环境下多线程编程技术最后给出利用该技术个例子即基于Windows95下TCP/IP可视电话实现   、问题提出   作者最近在开发基于Internet网上可视电话过程中碰到了这样个问题在基于Internet网上可视电话系统中同时要进行语音采集、语音编解码、图象采集、图象编解码、语音和图象 码流传输 所有这些事情都要并行处理特别是语音信号如果进行图象编解码时间过长语音信号得不到服务通话就有间断如果图象或语音处理时间过长而不能及时传输码流数据通信同样也会中断这样就要求我们实现种并行编程在只有个CPU机器 [阅读全文] [PDF]
随着计算机技术发展编程模型也越来越复杂多样化但多线程编程模型是目前计算机系统架构最终模型随着CPU主频不断攀升X86架构硬件已经成为瓶在这种架构CPU主频最高为4G事实上目前3.6G主频CPU已经接近了顶峰  如果不能从根本上更新当前CPU架构(在很长段时间内还不太可能)那么继续提高CPU性能思路方法就是超线程CPU模式那么作业系统、应用要发挥CPU最大性能就是要改变到以多线程编程模型为主并行处理系统和并发式应用  所以掌握多线程编程模型不仅是目前提高应用性能手段更是下代编程模型核心思想多线程编程目就是"最大限度地利用CPU资源"当某线程处理不需要占用CPU而只和I/O,OE [阅读全文] [PDF]
线程组   线程是被个别创建但可以将它们归类到线程组中以便于调试和监视只能在创建线程同时将它和个线程组相关联在使用大量线程中使用线程组组织线程可能很有帮助可以将它们看作是计算机上目录和文件结构  线程间发信  当线程在继续执行前需要等待个条件时仅有 synchronized 关键字是不够虽然 synchronized 关键字阻止并发更新个对象但它没有实现线程间发信Object 类为此提供了 3个:wait、noty 和 notyAll以全球气候预测为例这些通过将地球分为许多单元在每个循环中每个单元计算都是隔离进行直到这些值趋于稳定然后相邻单元的间就会交换些数据所以从本质上讲在 [阅读全文] [PDF]
认识多任务、多进程、单线程、多线程  要认识多线程就要从操作系统原理说起  以前古老DOS操作系统(V 6.22)是单任务还没有线程概念系统在每次只能做件事情比如你在copy东西时候不能rename文件名为了提高系统利用效率采用批处理来批量执行任务  现在操作系统都是多任务操作系统每个运行任务就是操作系统所做件事情比如你在听歌同时还在用MSN和好友聊天听歌和聊天就是两个任务这个两个任务是“同时”进行个任务般对应个进程也可能包含好几个进程比如运行MSN就对应个MSN进程如果你用是windows系统你就可以在任务管理器中看到操作系统正在运行进程信息  般来说当运行个应用时候就启动了 [阅读全文] [PDF]
Java 语言并发编程  就其自身来说并发编程是种技术提供了操作同时执行不论是在单系统上还是分布在大量系统上这类操作实际是些指令顺序例如单独某个顶级任务子任务这类操作能够并行执行或者是作为线程或者是作为进程线程和进程的间本质区别在于:进程通常是独立(例如独立地址空间)所以只能通过系统提供进程间通信机制进行交互而线程通常共享单进程状态信息能够直接共享系统资源和内存中对象  可以使用下面两种思路方法的通过多个进程来实现并发第种思路方法是在同个处理器上运行进程由操作系统处理进程的间上下文环境切换(可以理解这种切换要比同进程内多线程的间上下文环境切换更慢)第 2种思路方法是构建大规模并 [阅读全文] [PDF]
# windows.h //『注意1』由于CreateThread是API所以必须包含这个头文件 # iostream using std; DWORD WINAPI Thread1Proc( LPVOID lpParameter); //线程执行 DWORD WINAPI Thread2Proc( LPVOID lpParameter); //线程执行 a; b; c; temp(0); sum(0); { a=1; b=2; c=3; HANDLE hThread1= [阅读全文] [PDF]
  如果你是个计算机用户相信你定安装过操作系统当你用久了个操作系统你可能会安装个新操作系统但你往往希望保留现在操作系统比如当你有了个windows98你可以在上面再安装windows2K或是windowsXP这是WindowsNTloader可以认识比自己更早操作系统所以能够给你保留先前操作系统但是如果你现在已经拥有了个windows2K或是windowsXP你要在硬盘上再装个WINDOWS98甚至些怀旧派人士想在上面安装个DOS6.22此时又该如何办呢?你往往会用到第 3方软件Software比如V communications.inc Commander [阅读全文] [PDF]
  本课中我们将学习如何进行多线程编程另外我们还将学习如何在区别线程间进行通信  理论:  前课中我们学习了进程其中讲到每个进程至少要有个主线程这个线程其实是进程执行条线索除此主线程外您还可以给进程增加其它线程也即增加其它执行线索由此在某种程度上可以看成是给个应用增加了多任务功能当运行后您可以根据各种条件挂起或运行这些线程尤其在多CPU环境中这些线程是并发运行这些是在W32下才有概念在WIN16下并没有等同概念  在同进程中运行区别线程好处是这些线程可以共享进程资源如全局变量、资源等当然各个线程也可以有自己私有栈用于保存私有数据另外每个线程需要保存其运行上下 [阅读全文] [PDF]
笔者最近在开发基于Internet网上可视电话过程中碰到了这样个问题,即在基于In ternet网上可视电话系统中,同时要进行语音采集、语音编译码、图像采集、图像编译码、语音和图像码流传输,所有这些工作,都要并行处理特别是语音信号,如果进行图像编解码时间过长,语音信号得不到服务,通话就有间断;如果图像或语音处理时间过长,而不能及时传输码流数据,通信同样也会中断这样就要求我们实现种并行编程,在只有个CPU机器上,也就是要将该CPU时间按时定优先准则分配给各个事件,定期处理各事件,而不会对某事件处理过长在32位Windows95或Windows NT下,我们可以用多线程处理技术来实现这种并行处 [阅读全文] [PDF]
多线程是java个优势java使得员可以很方便进行多线程开发获得更好性能 有关多线程概念以及般多线程编程比如如何以及为何实现runnable接口为何stop会被Deprecated掉等等这个请看matrix的前多线程编程基础或者sunjava文档 有关多线程编程有几点这里要提到:1既然stop是不被推荐那么我们如何停止个线程呢?直接kill吗?在这里笔者整理总结种比较通用也比较稳定思路方法: threadtest extend Thread{//skip some code.. boolean runflag=true; public synchronized void s [阅读全文] [PDF]
阅读提要:在引入Java多线程技术后几乎所有应用开发在性能上都得到了很大改进本文将通过探讨超线程技术以及新出现多核心Intel处理器技术来分析这些线程技术是怎样成为Java编程个标准部分  、Java环境下多线程技术  构建线程化应用往往会对带来重要性能影响例如请考虑这样个它从磁盘读取大量数据并且在把它们写到屏幕的前处理这些数据(例如个DVD播放器)在个传统单线程(今天所使用大多数客户端)上次只有个任务执行每个这些活动分别作为个序列区别阶段发生只有在块已定义大小数据读取完成时才能进行数据处理因此能处理数据逻辑直到磁盘读操作完成后才得到执行这将导致非常差性能问题   在个多线程中可以分配个线程来 [阅读全文] [PDF]
·创建线程:    创建个新Thread对象例子Thread构造接受个参数: Thread DummyThread = Thread( ThreadStart(dummyFunction) );    ·执行线程:    使用Threading命名空间里start思路方法来运行线程: DummyThread.Start ;    ·组合线程:    经常会出现需要组合多个线程情况就是当某个线程需要其他线程结束来完成自己任务假设DummyThread必须等待DummyPriorityThread来完成自己任务我们只需要这样做: DummyPriorityThread.Join [阅读全文] [PDF]
Linux下多线程编程 80nfbaiducukd7O本文出自:" align=absMiddlehttp://www.china-pub.com 作者: 姚继锋 (2001-08-11 09:05:00) 80nfbaiducukd7O1 引言80nfbaiducukd7O  线程(thread)技术早在60年代就被提出但真正应用多线程到操作系统中去是在80年代中期solaris是这方面佼佼者传统Unix也支持线程概念但是在个进程(process)中只允许有个线程这样多线程就意味着多进程现在多线程技术已经被许多操作系统所支持包括Windows/NT当然也包括Linux80nfbaiducuk [阅读全文] [PDF]
级别: 初级杨沙洲XgxfbaiducukknI2001 年 10 月 01 日这是个关于Posix线程编程专栏作者在阐明概念基础上将向您详细讲述Posix线程库API本文是第篇将向您讲述线程创建与取消=atitle线程创建=smalltitle1.1 线程与进程相对进程而言线程是个更加接近于执行体概念它可以与同进程中其他线程共享数据但拥有自己栈空间拥有独立执行序列在串行基础上引入线程和进程是为了提高并发度从而提高运行效率和响应时间线程和进程在使用上各有优缺点:线程执行开销小但不利于资源管理和保护;而进程正相反同时线程适合于在SMP机器上运行而进程则可以跨机器迁移=smalltitle1.2 [阅读全文] [PDF]
八、线程的同步   虽然多线程能给我们带来好处,但是也有不少问题需要解决。例如,对于像磁盘驱动器这样独占性系统资源,由于线程可以执行进程的任何代码段,且线程的运行是由系统调度自动完成的,具有一定的不确定性,因此就有可能出现两个线程同时对磁盘驱动器进行操作,从而出现操作错误;又例如,对于银行系统的计算机来说,可能使用一个线程来更新其用户数据库,而用另外一个线程来读取数据库以响应储户的需要,极有可能读数据库的线程读取的是未完全更新的数据库,因为可能在读的时候只有一部分数据被更新过。   使隶属于同一进程的各线程协调一致地工作称为线程的同步。MFC提供了多种同步对象,下面我们只介绍最常用的四种 [阅读全文] [PDF]
1 2 > 共36条 分2页