多线程的学习是每个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实现数据批量操作。 批量异步Executors处理数据,实现限流操作,QPS限流。 线程池调用第三方接口限流实现逻辑。 案例适合: 1.批量处理大数据。...
汪文君JAVA多线程编程实战(完整不加密)。 汪文君JAVA多线程编程实战(完整不加密),连接挂了留言, 我补 java 汪文君 多线程 视频教程 实战。
java多线程实现TCP连接UDP聊天的聊天程序
使用java多线程编写的一个java类,从这个类中懂得贡献资源。
多线程与并发处理是程序设计好坏优劣的重要课题,本书通过浅显易懂的文字与实例来介绍Java线程相关的设计模式概念,并且通过实际的Java程序范例和 UML图示来一一解说,书中在代码的重要部分加上标注使读者更加容易...
《JAVA多线程设计模式》PDF 下载 《Java线程 高清晰中文第二版》中文第二版(PDF) 前言 第一章 线程简介 Java术语 线程概述 为什么要使用线程? 总结 第二章 Java线程API 通过Thread类创建线程 使用Runable接口...
java线程第二版中英文 java线程第二版中英文 线程并不是新的概念:许多操作系统和语言都支持它们。在Java出现以前,似乎人人都在谈论线程,却很少有人使用它。用线程编程是技巧性很强的且不可移植。 而在Java中却...
(注意,本资源附带书中源代码可供参考) 多线程与并发处理是程序设计好坏优劣的重要课题,本书通过浅显易懂的文字与实例来介绍Java线程相关的设计模式概念,并且通过实际的Java程序范例和 UML图示来一一解说,书中...
全部写在一个类中,为第一次交的作业,代码有点乱,但能运行,可以实现多线程下载
本程序是在原有基础上逐步完善的,第一版:http://download.csdn.net/detail/zpwmhx/4342943 第二版:http://download.csdn.net/detail/zpwmhx/4505209 详细文档请看: ...
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实现多线程并发中的读者与写者问题,能够实现多线程对临界资源的同步有序访问。 具体实现为: 给定一个队列A[1-10][1-100000]、元素编号1-10,其中每个元素包含10万个随机数。创建若干个线程,各循环100次;...
编写两个线程: 第一个线程计算2-1000000之间的质数及个数 第二个线程计算1000000-2000000之间的质数 及个数
本专栏主要为Java程序设计(基础)实验报告和Java程序设计(进阶)...进阶篇有反射、泛型、注解、网络编程、多线程、序列化、数据库、Servlet、JSP、XML解析、单例模式与枚举。本专栏主要为Java入门者提供实验参考。
java设计两个线程,一个线程充当电子表,每隔一秒在窗口上显示一下...另一个线程充当闹钟,每到整点就开始报时,即在窗口显示5次整点提示,同时将第一个线程挂起,报时完毕后再将第一个线程恢复。实验结果如图1-1所示:
多线程断点式下载示例代码,再分享一个Java 多线程断点式下载模块,主要原理是: 把context分为poolSize段,计算每段的长度。如果文件已存在,根据临时文件中记载的线程数量,继续上次的任务,如果下载的目标文件不...
完整版 Java高级教程 Java语言程序设计 第2章 Java多线程(共24页).ppt 完整版 Java高级教程 Java语言程序设计 第2章 哲学家的故事(共7页).ppt 完整版 Java高级教程 Java语言程序设计 第3章 Java网络基础知识(共...
Java语言程序设计教程课件第十一章多线程程序设计,教程选用清华大学雍俊海编写的Java程序设计教程第三版
第10章 JAVA多线程入门我们要学习多线程,就不可避免的需要学习一些计算机组成的一些知识,特别是cpu和内存相关的一些知识,我用一张简单的图来描述目前的计算机