`
windmark
  • 浏览: 32209 次
社区版块
存档分类
最新评论

async-threading 让flex支持多线程(转)

 
阅读更多

开源项目async-threading能使as3支持多线程,google code地址:http://code.google.com/p/async-threading/

 

      要在flex4 sdk环境下使用,要先修改一下源代码,打开com.symantec.premiumServices.asyncThreading.handlers.FPSObserverHandler

 

      将import mx.core.Application; 修改为import spark.components.Application;

  

      将private var _appRef:Application = Application.applicationas Application;修改为private var _appRef:Application = FlexGlobals.topLevelApplication as Application;

 

      同时导入import mx.core.FlexGlobals;

 

      这个api要求自定义的线程继承AbstractAsyncThread然后实现IAsyncThreadResponder接口,写一个测试用线程:

 

package thread
{
	import com.symantec.premiumServices.asyncThreading.abstract.AbstractAsyncThread;
	import com.symantec.premiumServices.asyncThreading.interfaces.IAsyncThreadResponder;
	
	/**
	 *  自定义线程 
	 */
	public class SelfDefinedThread extends AbstractAsyncThread implements IAsyncThreadResponder
	{
		private var f:Function;
		
		public function SelfDefinedThread(f:Function)
		{
			super();
			this.f = f;
		}
		
		public function execute():void
		{
			f.call();
		}
	}
}

 

这个api还是比较强大的,基本线程操作和通讯都能实现了,具体可以看附件内的源代码api。

 

      这个线程的构造函数要传入一个方法,这个方法将在线程启动后调用。

 

      测试代码:

 

<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" 
					   xmlns:s="library://ns.adobe.com/flex/spark" 
					   xmlns:mx="library://ns.adobe.com/flex/mx"
					   creationComplete="testThread()">
	<fx:Declarations>
		<!-- 将非可视元素(例如服务、值对象)放在此处 -->
	</fx:Declarations>
	
	<fx:Script>
		<![CDATA[
			import thread.SelfDefinedThread;
			
			private function testThread():void{
				//线程1
				var thread1:SelfDefinedThread = new SelfDefinedThread(
					function():void{
						trace("线程1执行");
						trace("开启线程2");
						thread2.start();
					});
				
				//线程2
				var thread2:SelfDefinedThread = new SelfDefinedThread(
					function():void{
						trace("线程2执行");
						if(thread1.sleeping)
						{
							thread1.kill();
							thread2.kill();
							thread3.kill();
							trace("线程1,2,3终止");
						}else{
							trace("开启一个线程3");
							thread3.start();
						}	
					});
				
				//线程3
				var thread3:SelfDefinedThread = new SelfDefinedThread(
					function():void{
						trace(thread3.id + "线程3执行");
						if(!thread1.sleeping)
						{
							thread1.sleep();
							trace("线程1休眠");
						}
					});
				thread1.priority = thread1.RUN_LEVEL_HIGH;
				thread2.priority = thread2.RUN_LEVEL_BELOW_NORMAL;
				thread1.start();
			}
			
		]]>
	</fx:Script>
	<s:Label x="281" y="122" text="多线程测试"/>
</s:WindowedApplication>

 

用调试模式执行就能看到结果:

 

 

分享到:
评论

相关推荐

    async-threading 让flex支持多线程

    "async-threading 让flex支持多线程"这个标题表明我们正在讨论如何在Adobe Flex环境中实现异步多线程处理。Flex是一种基于ActionScript的开放源码框架,常用于构建富互联网应用程序(RIA)。在Flex中,由于其默认的...

    async-profiler-1.8.1-linux-x64.tar.gz

    这得益于Java的异步事件探查器接口(Async Get Stack Trace),使得async-profiler可以高效地获取到线程堆栈信息,而不会引入过多的性能开销。 二、async-profiler的功能特性 1. CPU采样:async-profiler支持对...

    android-async-http-1.4.9下载

    在Android应用开发中,网络通信是必不可少的一部分,而`android-async-http`库是一个非常流行的异步HTTP客户端库,特别适合处理与服务器的交互。这个库由Leonardo Uribe创建,它提供了简单易用的API,使开发者可以...

    Android Async-Http Demo

    8. **HTTPS支持**:Async-Http库也支持HTTPS协议,可以安全地处理加密的网络通信。 9. **线程管理**:库内部处理了线程切换,确保在回调方法执行时回到正确的线程,避免了UI操作在非主线程执行的问题。 10. **取消...

    mongodb-async-driver-2.0.1 jar包

    MongoDB异步驱动程序(mongodb-async-driver)是为Java开发者设计的一个库,它允许应用程序以非阻塞的方式与MongoDB服务器进行通信,提高了处理大量并发请求的能力。 在"mongodb-async-driver-2.0.1.jar"这个特定...

    async-mysql-connector-1.6.jar

    async-mysql-connector-1.6.jar async-mysql-connector-1.6.jar async-mysql-connector-1.6.jar async-mysql-connector-1.6.jar async-mysql-connector-1.6.jar async-mysql-connector-1.6.jar async-mysql-...

    android-async-http的jar包

    Android-Async-Http是一个流行的开源库,用于在Android应用程序中执行异步HTTP请求。这个库由Loopj开发,简化了网络交互的过程,使得开发者能够更高效地处理网络操作,而无需阻塞主线程,从而避免ANR(Application ...

    前端开源库-babel-helper-remap-koa2-async-to-generator

    前端开源库-babel-helper-remap-koa2-async-to-generatorbabel-helper-remap-koa2-async-to-generator,将异步函数转换为ES2015生成器(koav2-&gt;koav1)。

    android-async-http-master

    8. **多线程支持**:Android-Async-Http允许你在多个线程中并发地发起请求,提高了网络操作的并行性。 9. **自定义拦截器**:通过实现`RequestInterceptor`接口,可以在请求发出前对其进行修改,例如添加全局的请求...

    Android android-async-http-1.4.9

    `android-async-http` 库提供了一个简洁的API,使得开发者可以方便地发送GET、POST等HTTP请求,同时支持文件上传和下载,以及JSON解析。 ### 使用`android-async-http` 1. **添加依赖**:在导入Eclipse项目时,需要...

    android-async-http-1.4.11.zip

    1)包里包含android-async-http-1.4.11.jar 和 httpclient-4.5.8.jar两个文件 2)强大的网络请求库,主要特征如下: 处理异步Http请求,并通过匿名内部类处理回调结果 Http请求均位于非UI线程,不会阻塞UI操作 通过...

    PyPI 官网下载 | async-caches-0.3.0.tar.gz

    `async-caches`库提供了简单易用的API,让开发者能够轻松地在异步代码中集成缓存功能。 **使用async-caches** 要使用`async-caches`,首先需要安装它。通过`pip`命令可以方便地从PyPI安装: ```bash pip install ...

    前端开源库-babel-plugin-transform-async-to-promises

    然而,不是所有的浏览器都原生支持`async/await`,这正是`babel-plugin-transform-async-to-promises`这个开源库的作用所在。它是一个Babel插件,旨在将`async function`和`await`语法转换为基于Promise的链式调用,...

    android-async-http 源码

    Build Status ...https://github.com/loopj/android-async-http/blob/1.4.9/CHANGELOG.md Javadoc Latest Javadoc for 1.4.9 release are available here (also included in Maven repository): ...

    Node.js-async-ratelimiter让速率限制变得简单轻松异步基于ratelimiter实现

    10. **性能优化**:除了基础功能,`async-ratelimiter`可能还提供了性能优化选项,如预分配令牌、自定义存储解决方案(如Redis或MongoDB)以实现分布式限速,或者支持动态调整限制策略。 综上所述,`async-...

    火焰图工具async-profiler-1.7.tar.gz

    `async-profiler`支持多种事件类型,包括CPU时间、自定义事件、JNI调用等。此外,它还具有异步特性,能够在不影响JVM性能的情况下进行采样,这是它与许多其他性能分析工具相比的一大优势。 总之,`async-profiler`...

    async-http-client-2.0.13.zip

    作为开源项目,Async-HTTP-Client拥有活跃的社区支持,不断有开发者贡献代码,修复问题,添加新功能,确保了项目的持续发展和兼容性。 9. **与其他库的集成**: 可以与Gson、Jackson等JSON库无缝集成,方便进行...

    android-async-http-1.4.5.jar

    最新异步网络请求android-async-http-1.4.5.jar

    android-async-http官方项目

    android-async-http官方项目:来自Github;...该项目中包含了多个版本的android-async-http.jar包,目前最新版本是:android-async-http-1.4.5.jar; 地址:原项目地址:https://github.com/loopj/android-async-http

Global site tag (gtag.js) - Google Analytics