/**
*
* @描述: 传统线程技术回顾 .
* <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(); }
时间: 2024-11-03 03:26:48