`
小桔子
  • 浏览: 23504 次
  • 性别: Icon_minigender_2
  • 来自: 贵阳
社区版块
存档分类
最新评论

Android/Swing中并发分析

阅读更多

       swing中创建事件分发线程,事件队列会一一存储并按顺序依次执行。比如说一个鼠标单击事件,当用按下鼠标,swing会分发线程去处鼠标理监听中鼠标按下要处理的事件。而主线程也将要绘制一些效果,比如鼠标按下、弹回去。如果在分发线程中执行一个长时间的任务,那主线程的绘画版面就不能及时执行,那么鼠标也不会弹起来了。所以不能在分发线程中执行长时间的任务呢。

android 中也类似哦,如果你在事件分发线程中执行一个长时间的任务会造成程序无响应异常。比如发起一个网络请求在android4.0以后就不允许编译通过了,网络请求通常耗时比较长。在android中时新建一个线程来执行。可以这么写,

ExecutorService exec=Executors.newCachedThreadPool();

exec.execute(new Runnable(){

public void run() {

//balabala……耗时任务

}});

exec.shutdown();

android使用多线程机制,主线程负责UI的绘制显示。事件分发线程中启动一个分支线程之后任务就完成了。主线程可以响应新的事件。新建的分支线程可以通过handler传递处理结果返回主线程。如果用户开启多个线程,就像同时执行多个任务一样拉风!

来个形象的大图!大笑



简单的代码:

package com.shark.main;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity {

	private Button task1;
	private Button task2;
	private Button task3;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		task1=(Button)this.findViewById(R.id.task1);
		task2=(Button)this.findViewById(R.id.task2);
		task3=(Button)this.findViewById(R.id.task3);
		final ExecutorService exec=Executors.newCachedThreadPool();
		task1.setOnClickListener(new OnClickListener(){
			public void onClick(View v) {
				exec.execute(new Runnable()
				{
					public void run() {
						for(int i=0;i<130000;i++)
						{
							System.out.println("Task1中的run"+i);
						}
					}
				});
			}
		});
		task2.setOnClickListener(new OnClickListener(){
			public void onClick(View v) {
				exec.execute(new Runnable()
				{

					@Override
					public void run() {
						for(int i=0;i<130000;i++)
						{
							System.out.println("Task2中的run"+i);
						}
					}
				});
			}
		});
		task3.setOnClickListener(new OnClickListener(){
			public void onClick(View v) {
				exec.execute(new Runnable()
				{
					public void run() {
						for(int i=0;i<130000;i++)
						{
							System.out.println("Task3中的run"+i);
						}
					}
				});
			}
		});
	}
}

 

 

 

 

而在Swing不同!哦也!下班了,都说线程理解起来很麻烦,所以会很详细的把这部分弄清楚一点,待续……(ps:自言自语,说得好像会有人看似地!!酷

 

  • 大小: 71.4 KB
分享到:
评论

相关推荐

    LumaQQ-Android.rar_android_android qq

    1. **UI设计**:Java的 Swing 和 AWT 库虽然在Android中不直接使用,但Android的布局和视图组件(如TextView、Button等)的设计理念深受Java GUI影响。LumaQQ的界面元素和交互逻辑都是通过Java代码实现的。 2. **...

    Java swing应用

    Java Swing是Java编程语言中用于构建桌面应用程序图形用户界面(GUI)的一个库,它是Java Foundation Classes (JFC)的一部分。Swing提供了丰富的组件集,包括按钮、文本框、菜单等,使得开发者能够创建功能完善的、...

    android与java的知识点

    在IT行业中,Android和Java是两个非常重要的概念,它们之间有着紧密的联系,但也有显著的区别。对于初学者来说,理解这些差异对于深入学习和开发至关重要。 首先,Android是一种基于Linux内核的操作系统,主要用于...

    sp_java_handsomemmf_socket_android监控_android_

    5. **Android客户端代码**:这部分源码展示了如何在Android应用中集成视频流的发送功能。开发者可以从中学习如何处理并发、线程管理以及优化性能。 6. **视频监控PC端程序**:压缩包中包含的"视频监控PC端程序.rar...

    android聊天室(带服务端,PC输入界面)

    【描述分析】 描述提到"此demo为android聊天室示例,包括安卓客户端,PC服务器 PC客户端",这表明这是一个完整的解决方案,涵盖了客户端和服务端的开发。Android客户端是运行在手机或平板等Android设备上的应用,而PC...

    android开发技巧与性能优化

    2. **事件处理机制**:Android采用监听器的方式处理用户输入事件,如点击、触摸等,而Java中的Swing和AWT则主要依赖于事件监听模型。 3. **生命周期管理**:Android应用具有明确的生命周期,包括启动、暂停、停止和...

    Android最佳学习路线图

    - **目标**:熟悉Android中各种数据存储方式,包括SharedPreferences、SQLite数据库、文件存储等。 5. **多媒体设计开发** - **目标**:掌握如何在Android应用中集成多媒体元素,如播放音频、视频、图片等。 6. **...

    Android XMPP例子(Openfire+asmack+spark)

    Android XMPP例子(Openfire+asmack+spark)是一个典型的基于Android平台的即时通讯(Instant Messaging,IM)应用实现,利用了XMPP协议、Openfire服务器、asmack库以及Spark客户端工具。XMPP(Extensible Messaging ...

    Android代码-twitch-chat

    首先,我们来深入理解Android代码在这一项目中的作用。Android代码在这里并不直接用于构建一个手机应用,而是作为IntelliJ IDEA插件的一部分。IntelliJ IDEA是一款强大的Java集成开发环境(IDE),广泛用于开发...

    Android游戏与应用开发最佳学习路线图.docx

    在Android游戏与应用开发的学习过程中,首先需要扎实的Java基础,因为Java是Android开发的核心语言。以下是详细的学习路径和目标: 1. **Java基础**: - **Java概述**:理解Java的历史、特点以及它在Android开发中...

    Sams Teach Yourself Java in 24 Hours (Covering Java 7 and Android), 6th Edition

    8. **多线程编程**:探讨 Java 中的并发编程模型,包括线程的创建、同步机制、线程安全问题及其解决策略。 9. **网络编程**:讲解如何在 Java 中进行网络通信,包括客户端/服务器模式下的网络编程、套接字编程等。 ...

    JDK_API_1_6 中文可用

    Java 6中的Swing组件也得到了更新,增加了JTabbedPane的Tab可关闭功能,增强了Swing的可定制性和用户体验。此外,JDBC(Java Database Connectivity)驱动也有所改进,提高了数据库连接的性能和稳定性。 在JDK_API_...

    软件工程师的个人简历表格示例.doc

    - 编写需求分析说明书、系统测试用例等,涉及SSH框架的Web开发、Swing界面的C/S系统开发,XML解析等。 - 担任项目组长,负责任务分配、进度跟进和技能培训。 4. ***(年份)** Java工程师 - 参与系统设计,包括用户...

    计算机软件Java编程及应用分析.zip

    13. **Android开发**:Java是Android应用的主要开发语言,Android SDK包含了大量的Java库和工具,开发者可以使用Java开发出运行在数亿设备上的应用。 14. **持续集成/持续部署(CI/CD)**:Jenkins等工具常用于Java...

    2012北京尚观android培训笔记之Java篇

    ### 2012北京尚观Android培训笔记之Java篇概览 #### 面向对象的理解 面向对象编程(OOP)是...以上是对2012年北京尚观Android培训中Java篇的主要知识点的总结,涵盖了从基础语法到高级概念,再到具体应用的广泛内容。

    分享之前收集的java源码共计71个

    8. **并发编程**:Java提供了强大的并发工具,如ExecutorService、Future、Callable等,源码中可能有并发控制、多线程同步、并发数据结构的示例,有助于理解和掌握并发编程的技巧。 9. **设计模式**:设计模式是...

    上传数据分析资源上传数据分析资源

    Java 支持多线程编程,允许在单个应用程序中并发执行多个任务。Java 通过`Thread`类和`Runnable`接口实现线程的创建和管理。多线程可以显著提高程序的效率和响应性。 #### 八、输入输出(I/O) Java 提供了丰富的I...

Global site tag (gtag.js) - Google Analytics