多线程基础
2015-11-11 17:36
176 查看
[b]什么叫多线程?[/b]
多线程:顾名思义就是多条线程同时进行,它是从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能。
多线程的优缺点有哪些?
优点:
(1)多线程技术使程序的响应速度更快 ,因为用户界面可以在进行其它工作的同时一直处于活动状态;
(2)当前没有进行处理的任务时可以将处理器时间让给其它任务;
(3)占用大量处理时间的任务可以定期将处理器时间让给其它任务;
(4)可以随时停止任务;
(5)可以分别设置各个任务的优先级以优化性能。
缺点:
(1)等候使用共享资源时造成程序的运行速度变慢。这些共享资源主要是独占性的资源 ,如打印机等。
(2)对线程进行管理要求额外的 CPU开销。线程的使用会给系统带来上下文切换的额外负担。当这种负担超过一定程度时,多线程的特点主要表现在其缺点上,比如用独立的线程来更新数组内每个元素。
(3)线程的死锁。即较长时间的等待或资源竞争以及死锁等多线程症状。
[b]多线程的使用场合?[/b]
(1)耗时或大量占用处理器的任务阻塞用户界面操作;
(2)各个任务必须等待外部资源 (如远程文件或 Internet连接)。
(3)文件上传下载
下面演示一下多线程的基本用法:
多线程:顾名思义就是多条线程同时进行,它是从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能。
多线程的优缺点有哪些?
优点:
(1)多线程技术使程序的响应速度更快 ,因为用户界面可以在进行其它工作的同时一直处于活动状态;
(2)当前没有进行处理的任务时可以将处理器时间让给其它任务;
(3)占用大量处理时间的任务可以定期将处理器时间让给其它任务;
(4)可以随时停止任务;
(5)可以分别设置各个任务的优先级以优化性能。
缺点:
(1)等候使用共享资源时造成程序的运行速度变慢。这些共享资源主要是独占性的资源 ,如打印机等。
(2)对线程进行管理要求额外的 CPU开销。线程的使用会给系统带来上下文切换的额外负担。当这种负担超过一定程度时,多线程的特点主要表现在其缺点上,比如用独立的线程来更新数组内每个元素。
(3)线程的死锁。即较长时间的等待或资源竞争以及死锁等多线程症状。
[b]多线程的使用场合?[/b]
(1)耗时或大量占用处理器的任务阻塞用户界面操作;
(2)各个任务必须等待外部资源 (如远程文件或 Internet连接)。
(3)文件上传下载
下面演示一下多线程的基本用法:
package com.thinkive.DuoXianCheng; public class Test extends Thread { @Override public void run() { System.out.println(getName() + "线程开始运行"); for (int i = 0; i < 3; i++) { System.out.println("我是"+getName()+i); } System.out.println(getName() + "结束运行"); } public static void main(String[] args) { Thread t1 = new Test();//创建第一条线程 Thread t2 = new Thread(new demo(), "李四");//分配新的 Thread 对象,创建第二条线程 t1.setName("张三"); t1.start(); //使该线程开始执行;Java 虚拟机调用该线程的 run 方法。 t2.start(); } } //注意:在同一个文件中创建多个类,这个文件只能有一个类被public修饰 class demo implements Runnable { @Override public void run() { System.out.println(Thread.currentThread().getName() + "线程开始运行!"); for (int i = 0; i < 3; i++) { System.out.println("我是"+Thread.currentThread().getName()+i); } System.out.println(Thread.currentThread().getName() + "结束运行!"); } }
相关文章推荐
- Javascript模块化编程(三):require.js的用法
- scala中的隐式转换之一
- while continue 更新文件
- muduo库阅读(30)——Net部分:事件处理器Channel
- genymotion集成eclipse插件安装教程
- iOS的同事们,如果你们的图片不显示,先去检查后缀名吧.
- Java 基础
- 出现Time Limit Exceed 求解 对于任意大于1的自然数n,如果n为奇数,则n=3n+1,否则n=n/2,则经过若干步骤后n一定会变成1
- 4种CSS样式方式
- DIV+CSS如何让文字垂直居中
- apk与apk 数据共享详解
- c语言问题:输入输出数据的问题、if语句的一些问题
- IOS开发类似游戏血条 的progressView
- springMVC+Mybatis
- 如何使KVM虚拟机的CPU和物理CPU一模一样?
- 【VB.NET】——整体把控
- Mysql中文乱码问题完美解决方案(包括建库、导入数据、网页)
- 离线安装eclipse插件 testng
- 移动端 UI 适配最佳实践(下)
- LeetCode Range Sum Query - Immutable