java开发中为什么使用多线程

     说实话工作中遇到使用多线程的机会并不多,对线程的理解也一直是模模糊糊的感觉,有时候知道为什么有时候又不知道,但是现在养成了一个好习惯,就是知道问Why?任何事都有他出现的理由!
	
为什么使用多线程。
   先说下传统的不用多线程是啥样的。
package com.team.gaoguangjin.thread.style;

import lombok.extern.slf4j.Slf4j;

/**
 * @ClassName:NotUseThread.java
 * @Description:业务场景:上班时间
 * @author gaoguangjin
 * @Date 2015-3-19 下午5:40:05
 */
@Slf4j
public class NotUseThread {
	public static void main(String[] args) throws InterruptedException {
		// 早上上班路上50分钟时间
		gotoWorkNormal();
	}
	
	private static void gotoWorkNormal() throws InterruptedException {
		long beginTime = System.currentTimeMillis();
		// 1、坐车30
		takeTheSubWay();
		// 2、吃饭10
		eatBreakFast();
		// 3、看新闻10
		readNews();
		long endTime = System.currentTimeMillis();
		log.info("总耗费时间:" + (endTime - beginTime) / 100 + "分钟");
	}
	
	private static void readNews() throws InterruptedException {
		Thread.sleep(1000);
		log.info("看新闻花费10分钟");
	}
	
	private static void eatBreakFast() throws InterruptedException {
		Thread.sleep(1000);
		log.info("吃饭花费10分钟");
	}
	
	private static void takeTheSubWay() throws InterruptedException {
		Thread.sleep(3000);
		log.info("坐车花费30分钟");
	}
}
</pre><pre name="code" class="html">2015-03-19 17:53:28,566  INFO [main] (NotUseThread.java:51) - 坐车花费30分钟
2015-03-19 17:53:29,569  INFO [main] (NotUseThread.java:46) - 吃饭花费10分钟
2015-03-19 17:53:30,569  INFO [main] (NotUseThread.java:40) - 看新闻花费10分钟
2015-03-19 17:53:30,569  INFO [main] (NotUseThread.java:34) - 总耗费时间:50分钟
</pre><pre name="code" class="html">整个上班用了50分钟哎,是不是挺长的。
</pre><pre name="code" class="html">如果我们用线程来跑 看看会咋样!
<pre name="code" class="java">package com.team.gaoguangjin.thread.style;

import lombok.extern.slf4j.Slf4j;

/**
 * @ClassName:UseThread.java
 * @Description: 业务场景。多线程上班
 * @author gaoguangjin
 * @Date 2015-3-19 下午5:59:04
 */
@Slf4j
public class UseThread extends Thread {
	static long beginTime = 0;
	static long endTime = 0;
	
	public static void main(String[] args) throws InterruptedException {
		beginTime = System.currentTimeMillis();
		// 早上上班路上50分钟时间
		new UseThread().start();
		gotoWorkNormal();
		log.info("利用坐车时间吃饭和看新闻");
	}
	
	public void run() {
		try {
			// 1、坐车30
			takeTheSubWay();
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
	}
	
	private static void gotoWorkNormal() throws InterruptedException {
		// 2、吃饭10
		eatBreakFast();
		// 3、看新闻10
		readNews();
	}
	
	private static void readNews() throws InterruptedException {
		Thread.sleep(1000);
		log.info("看新闻花费10分钟");
	}
	
	private static void eatBreakFast() throws InterruptedException {
		Thread.sleep(1000);
		log.info("吃饭花费10分钟");
	}
	
	private static void takeTheSubWay() throws InterruptedException {
		Thread.sleep(3000);
		log.info("坐车花费30分钟");
		endTime = System.currentTimeMillis();
		log.info("总耗费时间:" + (endTime - beginTime) / 100 + "分钟");
	}
}


传统的代码都是串行的模式,一行一行的执行,如果某一个方法执行时间很久,那就必须等待整个方法执行结束之后,再去执行下面的方法,这样就大大浪费了cpu的性能。
</pre><pre name="code" class="html">
</pre><pre name="code" class="html">
</pre><pre name="code" class="html">
</pre><pre name="code" class="html">
</pre><pre name="code" class="html">
</pre><pre name="code" class="html">
</pre><pre>
 

                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值