`
hanyi366
  • 浏览: 290404 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

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中,由于其默认的...

    vs-threading:Microsoft.VisualStudio.Threading是一个xplat库,它提供了Visual Studio和其他应用程序中使用的许多线程和同步原语

    Microsoft.VisualStudio.Threading 分析仪: 产品特点 许多线程同步原语的异步版本 AsyncAutoResetEvent AsyncBarrier AsyncCountdownEvent AsyncManualResetEvent AsyncReaderWriterLock AsyncSemaphore ...

    Wrox - APress - C# Threading Handbook

    同时,还会介绍异步编程模型,如`async/await`关键字,它们提供了更简洁、更易于管理的并发方式。 其次,书中会涉及线程同步和互斥,这是避免竞态条件和死锁的关键。`Monitor`, `Mutex`, `Semaphore`和`...

    WatchKit-Threading:一个非常简单的演示应用程序显示 WatchKit 中的线程工作

    本文将深入探讨 WatchKit 中的线程工作,通过一个名为 "WatchKit-Threading" 的简单演示应用程序,我们能够直观地了解这一主题。 线程在 WatchKit 中的作用主要是为了实现后台任务和异步操作,避免阻塞主线程,确保...

    bootcamp-threading:Projeto基地

    【标题】"bootcamp-threading:Projeto基地"是一个与多线程相关的训练项目,它主要探讨了在非Android环境中如何有效地使用线程技术。在这个项目中,开发者可能旨在通过Kotlin语言,来实践和理解线程管理的重要性以及...

    async-file-upload-using-jquery-formdata-and-asp-net-web-api:使用JQuery,FormData和ASP.NET Web Api上传异步文件

    public async Task&lt;HttpResponseMessage&gt; Upload() { if (!Request.Content.IsMimeMultipartContent()) throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType); var provider = await ...

    Async in C# 5.0.pdf

    - **Task类介绍**:`System.Threading.Tasks.Task`是.NET Framework提供的一个强大类,用于封装异步操作。它提供了丰富的API来管理和协调异步任务。 #### 四、C# 5.0中的`async`和`await` - **`async`关键字**:...

    async和await使用简单实例

    using System.Threading.Tasks; class AsyncAwaitExample { static async Task Main() { Console.WriteLine("开始执行"); // 异步调用,模拟耗时操作 var result = await LongRunningOperation(); ...

    Python3.5中async_await特性的实现.pdf

    协程的调度完全由用户控制,与传统的操作系统线程(如Python的threading模块)相比,协程的创建和切换的开销要小得多。在Python中,协程的演化过程经历了从生成器(Generator)到增强型生成器(Enhanced Generators...

    使用async框架GET从网络上获取数据

    using System.Threading.Tasks; public async Task&lt;string&gt; GetRemoteDataAsync(string url) { using (var client = new HttpClient()) { try { HttpResponseMessage response = await client.GetAsync(url); ...

    async多线程性能优化代码 + 线程池

    1. 创建线程:可以通过`System.Threading.Thread`类创建新线程,或者使用`ThreadPool`线程池来创建和管理线程。 2. 线程同步:为了避免线程间的竞态条件和数据不一致,可以使用锁(如`Monitor`,`Mutex`,`Semaphore...

    Threading in C#中文.7z

    6. **异步编程**:C#的异步编程模型基于async/await关键词,允许开发者编写非阻塞代码,提高UI的响应性。异步操作通常通过异步方法返回一个Task,当Task完成时,await表达式会恢复执行。 7. **线程优先级**:每个...

    commons-unity-async:用于Unity的异步工具

    5. **Threading工具**:库中可能包含了线程相关的辅助类,比如线程池管理、线程安全的数据结构等,帮助开发者更好地管理和同步多线程操作。 6. **Event-Based Asynchronous Pattern (EAP)** 和 **Async Programming...

    sample console multithreading

    在编程领域,多线程(Multi-Threading)是一种强大的技术,允许程序同时执行多个任务,以提高效率和响应性。在“sample console multithreading”这个项目中,我们将深入探讨如何利用多线程在控制台应用程序...

    python中threading开启关闭线程操作

    Python中的`threading`模块是实现多线程编程的关键,它提供了一种方式来执行并发任务,从而提高程序的效率。本文将详细讲解如何在Python中开启和关闭线程,以及如何实现线程的控制。 ### 一、开启线程 开启线程的...

    Threading in C#

    - **异步方法**: 通过使用异步关键字`async`来简化异步编程。 - **异步事件**: 用于异步地通知事件的发生。 - **计时器(Timers)**: 用于定期执行任务。 - **本地存储(LocalStorage)**: 存储特定于线程的数据。 ####...

    gevent,threads&async frameworks.zip

    "gevent, threads & async frameworks"这个主题涵盖了三个主要概念:gevent、多线程以及异步框架。以下是对这些概念的详细解释: 1. **Gevent**: Gevent是一个基于Python的库,用于实现协程(coroutines)和事件...

    Threading in C#(中).pdf

    - **异步委托**:通过使用`Task`和`async/await`关键字,可以在不显式管理线程的情况下编写异步代码。 - **计时器**:`System.Timers.Timer`或`System.Threading.Timer`类可以用来执行定期的任务。 - **局部存储**:...

    说说C#的async和await的具体用法

    C# async 和 await 的具体用法 C# 5.0 中引入了 async 和 await 两个关键字,这两个关键字可以让开发者更方便地编写异步代码。async 和 await 的出现使得异步编程变得更加简单易懂。 async 关键字 async 关键字...

Global site tag (gtag.js) - Google Analytics