您的位置:首页 > 其它

传统线程技术回顾

2017-05-25 09:54 232 查看
/**

*

* @描述: 传统线程技术回顾 .

* <p>

*

* 多线程机制会提高程序的运行效率?

*

==============================================

不会,会更慢,因为CPU资源有限

为什么会有多线程下载呢?

是为了抢夺服务器带宽

==============================================

不一定,多线程又不能提高CPU的主频,也就是单位时间能够执行的指令数目,如果是一个单线程的任务,

CPU也只能处理单线程的话,做成多线程去处理的话,可能会降低运行的效率,比如一个人,三张桌子,

分别在一个桌子做一个馒头,然后去另外一张桌子继续做,还是只在一张桌子上面做要快了?

明显当然是在一张桌子上面做要快,因为不停的跑到其他桌子需要时间,也就是CPU切换线程需要时间。

为什么要使用多线程?

1.关注的点,进行分离

2.提升性能

举例子:

影响效率的因素有很多种,比如:因资源独占而发生的等待,一个比较耗时的文件上传,文件下载,或者跟客户聊天都需要长时间的

建立连接 ,如果一个线程去处理的话是服务不了太多的客户的。

多线程处理就会提升性能,在相同的时间里做更多的事情,服务更多的客户

*

* </p>

*/

public class TraditionalThread {

/**
* @param args
*/
public static void main(String[] args) {

/**
* 编写方式1

Thread thread = new Thread(){

//覆盖Thread类中的run方法

@Override
public void run() {
while(true){
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("当前线程对象名称获取方法1:" + Thread.currentThread().getName());
//this代表当前对象Thread,不建议这样做,目前是很清楚this是谁
System.out.println("当前线程对象名称获取方法2:" + this.getName());
}
}
};
thread.start();
*/

/**
* 编写方式2:传入 public Thread(Runnable target)
* new Runnable(){线程所要运行的宿主
* 此写法更能体现面向对象的编程

Thread thread2 = new Thread(new Runnable(){
@Override
public void run() {
while(true){
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("1:" + Thread.currentThread().getName());
//此时this此不代表当前对象
//System.out.println("当前线程对象名称获取方法2:" + this.getName());

}

}
});
thread2.start(); */

new Thread(
new Runnable(){
public void run() {
while(true){
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("runnable :" + Thread.currentThread().getName());

}
}
}
){
public void run() {
while(true){
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("thread :" + Thread.currentThread().getName());

}
}
}.start();

}


  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: