`
xiaofan_0204
  • 浏览: 124779 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java多线程(第一节课)

    博客分类:
  • Java
 
阅读更多
多线程的学习是每个Java程序员必备的知识!
多线程在实际开发中主要还是用来处理异步和同步程序,在提高程序的运行效率上也起到了不少的作用,但这并不是绝对的, 通常情况下,多线程是能够提高程序的运行效率的,按WINDOWS的比喻,一个CPU应该是100个工人. 100个工人挖山从一头挖,最多同时能20个人一起挖,其他80个人休息.(这是单线程) 如果两头挖,最多同时40人一起挖,60个人休息.
(这是多线程)所以多线程只能提高CPU的使用效率. 间接也提高了程序的运行效率,所以总结的来说,在资源有剩余的情况下,多线程能提高程序的运行效率但是在资料忙得情况下,多线程反而降低程序的运行效率。
废话少说,今天主要说说多线创建的几种方式
package com.huawei.interview;

public class TestThread {
	/**
	 * 通常情况下,多线程是能够提高程序的运行效率的,按WINDOWS的比喻,一个CPU应该是100个工人. 
     * 100个工人挖山从一头挖,最多同时能20个人一起挖,其他80个人休息.(这是单线程) 如果两头挖,最多同时40人一起挖,60个人休息.
     * (这是多线程)所以多线程只能提高CPU的使用效率. 间接也提高了程序的运行效率,所以总结的来说,在资源有剩余的情况下,
     * 多线程能提高程序的运行效率但是在资料忙得情况下,多线程反而降低程序的运行效率。
	 * @param args
	 */
	public static void main(String[] args) {
		System.out.println(Thread.currentThread().getName());
		
		/**
		 * 创建一个子线程,并写明该线程要执行的代码
		 */
		Thread thread1 = new Thread(){
			@Override
			public void run() {
				try {
					Thread.sleep(2000);
					System.out.println("Thread1 is start:" + Thread.currentThread().getName());
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
			}
			
		};
		thread1.start();
		
		/**
		 * 创建一个子线程,将子线程要运行的代码封装到一个独立的对象去.
		 * 如果指定了子线程要执行的代码,那么该子线程将执行自己的代码,
		 * 不会去执行线程对象的代码.如thread3所示
		 * 开发中通常使用这种方式,因为这种方式更能体现面向对象
		 * 的思想.
		 */
		Thread thread2 = new Thread(new Runnable() {
			@Override
			public void run() {
				try {
					Thread.sleep(2000);
					System.out.println("Thread2 is start:" + Thread.currentThread().getName());
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
			}
		});
		
		thread2.start();
		
		
		Thread thread3 = new Thread(new Runnable(){//匿名内部类的构造方法调用父类非默认的构造方法
			@Override
			public void run(){
				try {
					Thread.sleep(2000);
					System.out.println("interface is :" + Thread.currentThread().getName());
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
			}
		}){
			@Override
			public void run() {
				try {
					Thread.sleep(2000);
					System.out.println("extend is :" + Thread.currentThread().getName());
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
			}
		};
		
		thread3.start();
		
		/**
		 * 多线程并不能提高程序运行的效率,
		 */
	}
}



Timer类(java中定时器的应用)
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;

class MyTimer extends TimerTask {
	@Override
	public void run() {
		System.out.println("Hello world!");	
	}
}

public class TraditinalTimer {
	
	public static void main(String[] args) throws InterruptedException {
		
		/**
		 * 创建一个定时器,定义4秒后执行,之后没3秒执行一次
		 */
		new Timer().schedule(new MyTimer(), 4000, 3000);
		
		while(true){
			Thread.sleep(1000);
			System.out.println(new Date().getSeconds());
		}
	}
}
分享到:
评论

相关推荐

    Java多线程编程技术

    《Java多线程编程核心技术》建议猿友们读两遍,因为其写得没有那么抽象,第一遍有些概念不是很理解,可以先跳过并记录起来,第一遍阅读的目的主要是了解整个架构。第二遍再慢慢品味,并贯穿全部是指点来思考,并将...

    Java多线程Executors批量执行数据实现限流

    Java多线程实现数据切割批量执行,实现限流操作。 java线程池Executors实现数据批量操作。 批量异步Executors处理数据,实现限流操作,QPS限流。 线程池调用第三方接口限流实现逻辑。 案例适合: 1.批量处理大数据。...

    汪文君JAVA多线程编程实战(完整不加密)

    汪文君JAVA多线程编程实战(完整不加密)。 汪文君JAVA多线程编程实战(完整不加密),连接挂了留言, 我补 java 汪文君 多线程 视频教程 实战。

    java多线程实现TCP连接UDP聊天的聊天程序

    java多线程实现TCP连接UDP聊天的聊天程序

    你的第一个java多线程应用

    使用java多线程编写的一个java类,从这个类中懂得贡献资源。

    《Java多线程设计模式》附源码中文教程 (PDF)

    多线程与并发处理是程序设计好坏优劣的重要课题,本书通过浅显易懂的文字与实例来介绍Java线程相关的设计模式概念,并且通过实际的Java程序范例和 UML图示来一一解说,书中在代码的重要部分加上标注使读者更加容易...

    java 多线程设计模式 进程详解

    《JAVA多线程设计模式》PDF 下载 《Java线程 高清晰中文第二版》中文第二版(PDF) 前言 第一章 线程简介 Java术语 线程概述 为什么要使用线程? 总结 第二章 Java线程API 通过Thread类创建线程 使用Runable接口...

    线程 JAVA java线程 java线程第3版 java线程第2版第3版合集

    java线程第二版中英文 java线程第二版中英文 线程并不是新的概念:许多操作系统和语言都支持它们。在Java出现以前,似乎人人都在谈论线程,却很少有人使用它。用线程编程是技巧性很强的且不可移植。 而在Java中却...

    java多线程设计模式详解(PDF及源码)

    (注意,本资源附带书中源代码可供参考) 多线程与并发处理是程序设计好坏优劣的重要课题,本书通过浅显易懂的文字与实例来介绍Java线程相关的设计模式概念,并且通过实际的Java程序范例和 UML图示来一一解说,书中...

    java多线程简单下载器

    全部写在一个类中,为第一次交的作业,代码有点乱,但能运行,可以实现多线程下载

    java的ftp多线程下载

    本程序是在原有基础上逐步完善的,第一版:http://download.csdn.net/detail/zpwmhx/4342943 第二版:http://download.csdn.net/detail/zpwmhx/4505209 详细文档请看: ...

    java多线程每个线程挨着打印ABC的4种实现方式

    java多线程每个线程挨着打印ABC的4种实现方式,有4个线程t1、t2、t3、t4,t1打印A后t2打印A再t3打印A再t4打印A,然后从新回到t1打印B再t2打印B...t4打印B... 4个线程轮流打印abc... 一个线程可以理解为一个人,打印...

    java实现多线程间的同步与互斥(读者写者问题)

    用java实现多线程并发中的读者与写者问题,能够实现多线程对临界资源的同步有序访问。 具体实现为: 给定一个队列A[1-10][1-100000]、元素编号1-10,其中每个元素包含10万个随机数。创建若干个线程,各循环100次;...

    java多线程使用

    编写两个线程:  第一个线程计算2-1000000之间的质数及个数  第二个线程计算1000000-2000000之间的质数 及个数

    Java实验6多线程.doc

    本专栏主要为Java程序设计(基础)实验报告和Java程序设计(进阶)...进阶篇有反射、泛型、注解、网络编程、多线程、序列化、数据库、Servlet、JSP、XML解析、单例模式与枚举。本专栏主要为Java入门者提供实验参考。

    java多线程实验

    java设计两个线程,一个线程充当电子表,每隔一秒在窗口上显示一下...另一个线程充当闹钟,每到整点就开始报时,即在窗口显示5次整点提示,同时将第一个线程挂起,报时完毕后再将第一个线程恢复。实验结果如图1-1所示:

    再分享一个Java 多线程断点式下载模块.rar

    多线程断点式下载示例代码,再分享一个Java 多线程断点式下载模块,主要原理是: 把context分为poolSize段,计算每段的长度。如果文件已存在,根据临时文件中记载的线程数量,继续上次的任务,如果下载的目标文件不...

    完整版 Java高级教程 Java语言程序设计 第2章 Java多线程(共24页).ppt

    完整版 Java高级教程 Java语言程序设计 第2章 Java多线程(共24页).ppt 完整版 Java高级教程 Java语言程序设计 第2章 哲学家的故事(共7页).ppt 完整版 Java高级教程 Java语言程序设计 第3章 Java网络基础知识(共...

    Java语言程序设计教程课件第十一章多线程程序设计

    Java语言程序设计教程课件第十一章多线程程序设计,教程选用清华大学雍俊海编写的Java程序设计教程第三版

    JAVA多线程1

    第10章 JAVA多线程入门我们要学习多线程,就不可避免的需要学习一些计算机组成的一些知识,特别是cpu和内存相关的一些知识,我用一张简单的图来描述目前的计算机

Global site tag (gtag.js) - Google Analytics