首页 > 代码库 > 传统线程技术回顾

传统线程技术回顾

/**

 * 

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

 * <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();			}

  



传统线程技术回顾