`

传统线程技术回顾

阅读更多
/**
 * TraditionalThread.java
 * cn.com.songjy.test.socket.thread
 * Function: TODO 
 *
 *   version    date      author
 * ──────────────────────────────────
 *   	1.0	 2013-8-15    songjy
 *
 * Copyright (c) 2013, TNT All Rights Reserved.
 */

package cn.com.songjy.test.socket.thread;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

/**
 * ClassName:TraditionalThread
 * 
 * @author songjy
 * @version 1.0
 * @since v1.0
 * @Date 2013-8-15 下午8:51:31
 */

public class TraditionalThread {

	private static Log log = LogFactory.getLog(TraditionalThread.class);

	public static void main(String[] args) {
		
		/*********线程一*********/
		Thread thread1 = new Thread() {

			@Override
			public void run() {

				while (true) {
					try {
						Thread.sleep(500);
					} catch (InterruptedException e) {
						log.error(e.getMessage(), e);
					}
					log.info("11:" + Thread.currentThread().getName());
					log.info("12:" + this.getName());// 不推荐
				}

			}

		};
		thread1.start();

		/*********线程二*********/
		Thread thread2 = new Thread(new Runnable() {

			@Override
			public void run() {
				while (true) {
					try {
						Thread.sleep(500);
					} catch (InterruptedException e) {
						log.error(e.getMessage(), e);
					}
					log.info("21:" + Thread.currentThread().getName());
					// log.info("22:" + this.getName());// 此处不能使用this
				}
			}
		});

		thread2.start();

		/*********线程三*********/
		//猜猜看本线程打印出的是【31Runnable:+线程名】还是【31+线程名】
		new Thread(new Runnable(){

			@Override
			public void run() {
				while (true) {
					try {
						Thread.sleep(500);
					} catch (InterruptedException e) {
						log.error(e.getMessage(), e);
					}
					log.info("31Runnable:" + Thread.currentThread().getName());
				}
			}}) {

			@Override
			public void run() {//运行的是此方法,因为子类覆盖(重写)了父类方法,运行的将是子类方法,这是面向对象的一个重要特性
				while (true) {
					try {
						Thread.sleep(500);
					} catch (InterruptedException e) {
						log.error(e.getMessage(), e);
					}
					log.info("31:" + Thread.currentThread().getName());
				}
			}

		}.start();
	}
	//多线程不一定执行效率快,好比一个人做馒头给3个桌面上人吃,在一个桌面上做自然比给每个人一个桌面上做一个又跑到另一个桌面上快
	//多线程下载是抢资源,服务器为一个线程分配20k,我多开线程下载,自然分配的带宽就多了
}


引自
http://down.51cto.com/data/443405
分享到:
评论

相关推荐

    Java多线程与并发库高级应用视频教程22集

    资源名称:Java多线程与并发库高级应用视频教程22集资源目录:【】01传统线程技术回顾【】02传统定时器技术回顾【】03传统线程互斥技术【】04传统线程同步通信技术【】04传统线程同步通信技术_分割纪录【】05线程...

    基于多核程序优化技术PPT课件.pptx

    编译回顾中提到,编译是将高级语言转换为机器语言的过程,包括词法分析、语法分析、语义分析、生成中间代码和代码优化五个阶段。代码优化是为了提高程序运行效率,包括时间效率(减少运行时间)和空间效率(减少内存...

    不可磨灭的记忆CPU发展史经典回顾.docx

    随着技术的进步,诸如铜连线技术也被引入,取代了传统的铝连线,以提高导电性能和芯片效率。 CPU的性能不仅取决于其内部的晶体管数量,还受到诸如时钟频率、缓存大小、架构设计等因素的影响。例如,Intel的Pentium ...

    UNIX 高级教程系统技术内幕

    1.3 回顾与展望 1.3.1 UNIX 好在哪里 1.3.2 UNIX 的误区在哪儿 1.4 本书的范围 1.5 参考文献 第2 章 进程与内核(17) 2.1 简介 2.2 模式.空间和上下文 2.3 进程抽象 2.3.1 进程状态 2.3.2 进程上下文 2.3.3 用户凭证 ...

    企业级iOS应用开发实战(全部章节)

    核心技术篇(7~17章),系统深入地讲解了网络、XML和JSON、用户数据保存、安全、多媒体、绘图、动画、多点触摸和手势、GPS、重力感应、本地化、多线程、并行编程、通知、通讯簿等与企业级应用相关的核心技术特性,...

    企业级iOS应用开发实战(高清版)

    核心技术篇(7~17章),系统深入地讲解了网络、XML和JSON、用户数据保存、安全、多媒体、绘图、动画、多点触摸和手势、GPS、重力感应、本地化、多线程、并行编程、通知、通讯簿等与企业级应用相关的核心技术特性,...

    数据采集系统的软件设计知识.pdf

    在编程实现过程中,充分利用LabWindows/CVI提供的多线程技术,保证了数据采集和处理的并行性,提升了系统的响应速度和处理效率。经过测试,该软件表现出良好的界面显示效果和用户操作体验,程序设计逻辑清晰,性能...

    毕业论文jsp1068小区物业管理系统ssh.doc

    14. **数字化、网络化、电子化、虚拟化**:这些概念体现了信息化社会的趋势,物业管理系统的开发就是这一趋势的具体体现,通过网络技术将传统物业管理转化为在线服务。 综上所述,该毕业论文详细阐述了一个基于JAVA...

    毕业论文ssm011线上旅行信息管理系统ssm+vue论文.docx

    - **Java技术**:作为后端开发的主要语言,提供面向对象的编程模型,支持多线程和网络通信,适合构建大型分布式系统。 - **MySQL数据库**:开源、关系型数据库,适用于存储和管理大量结构化数据,具有高效率和稳定...

    Professional Windows GUI Programming Using C#

    首先,我们回顾一下传统的客户端-服务器架构。在早期,开发者通常会构建包含所有GUI代码和大部分业务逻辑的Windows应用程序。这种模式虽然简单,但当业务规则需要变更时,维护和扩展变得困难。为了改善这种情况,...

    基于JAVA的数字逻辑虚拟实验平台的设计与实现.doc

    利用JAVA的多线程技术,模拟实验过程中信号的变化,动态展示实验结果。同时,通过事件驱动机制,实现用户与虚拟设备的实时交互。 3.4 数据管理 Access2007数据库用于存储用户的实验数据、进度和成绩,便于教师跟踪...

    基于JDK的ForkJoin构建一个简单易用的并发组件1

    首先,让我们回顾一下传统的并发实现方式。以商品详情页面的展示为例,通常的做法是创建一个线程池,将各个服务调用封装成单独的线程任务,并提交到线程池执行,如下所示: ```java ExecutorService ...

    传智播客扫地僧视频讲义源码

    14_传统链表和非传统链表 15_链表的技术体系推演 16_通用链表库集成和测试 17_C提高课程_day05-day07_知识体系梳理_传智扫地僧 源码及文档 第二部分 C++基础目录 01_C++基础课程的安排和需要持之以恒的学习态度 02_...

    基于Java回顾之网络通信的应用分析

    NIO引入了选择器(Selector)和通道(Channel)的概念,允许单线程同时处理多个连接,提高了服务器的并发性能。例如,使用Selector可以监控多个SocketChannel,当某个通道准备好进行读写时,Selector会通知应用程序...

    js,java提高编程效率之【for循环优化】.pdf

    首先,我们来回顾一下传统的for循环语法: ```javascript for(var i = 0; i ; i++) { // 对arrays[i]进行处理 } ``` 这段代码适用于遍历数组中的所有元素。然而,当数组非常大时,每次循环都要检查`arrays.length...

Global site tag (gtag.js) - Google Analytics