传统线程技术回顾

Posted 安静

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了传统线程技术回顾相关的知识,希望对你有一定的参考价值。

/**

 * 

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

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

  



以上是关于传统线程技术回顾的主要内容,如果未能解决你的问题,请参考以下文章

(黑马Java多线程与并发库高级应用)01 传统线程技术回顾

Java多线程与并发库高级应用-传统定时器技术回顾

JAVA多线程提高一:传统线程技术&传统定时器Timer

并发技术12线程锁技术的使用

传统线程的创建方式

java并发线程锁技术的使用