传统线程技术回顾

/**

*

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

* <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

传统线程技术回顾的相关文章

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

传统创建线程的两种方式 package cn.itcast.heima2; public class TraditionalThread { public static void main(String[] args) { // TODO Auto-generated method stub Thread thread = new Thread() { @Override public void run() { while (true) { try { Thread.sleep(500); }

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

前面我们已经对多线程的基础知识有了一定的了解,那么接下来我们将要对多线程进一步深入的学习:但在学习之前我们还是要对传统的技术进行一次回顾,本章我们回顾的则是:传统线程技术和传统的定时器实现. 一.传统线程技术 1.创建方式 1.继承thread类 Thread t = new Thread(){ @Override public void run() { } }; t.start(); 2.实现Runnable接口 Thread t1 = new Thread(new Runnable() {

【java并发】传统线程技术中的定时器技术

传统线程技术中有个定时器,定时器的类是Timer,我们使用定时器的目的就是给它安排任务,让它在指定的时间完成任务.所以先来看一下Timer类中的方法(主要看常用的TimerTask()方法): 返回值 方法名 方法描述 void schedule(TimerTask task, long delay) 安排在指定延迟后执行指定的任务. void schedule(TimerTask task, long delay, long period) 安排指定的任务从指定的延迟后开始进行重复的固定延迟执

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

传统定时器技术回顾(jdk1.5以前) public class TraditionalTimerTest { static int count = 0; public static void main(String[] args) { //10秒后开始执行,每隔3秒执行一次 new Timer().schedule(new TimerTask() { @Override public void run() { System.out.println("bombing..."); } }

Java 传统线程技术

Java 多线程 在Java中,线程类Thread创建方式有两种:一是继承Thread类,重写run方法:二是,实现Runnable接口.大多数情况下,推荐使用第二种方式,实现runnable接口,这样可以很好的将任务与执行单元分离,更加突出面向对象的思想. 在JDK1.5之前,线程间互斥主依靠内置锁(监视器),而线程间通信则采用Object实例的wait,notify等方法.在JDK1.5之后,增加了很多线程新技术,如线程池.锁.信号量.条件.栅栏.阻塞队列.同步容器等. 1.       传

1.传统线程技术的回顾-JDK5多线程

内容摘抄来自:传智播客 张孝祥 老师的<Java高新技术>视频,   并加入了个人总结和理解. 虽然我没有参加过任何培训班,但我很大一部分知识都来自于传智播客的网络分享视频. 十分真挚的感谢张老师的公开视频. 1 import org.junit.Test; 2 /** 3 * 传统线程回顾 4 * 多线程不一定会提高运行效率,和CPU设计和架构有关. 5 * 多线程下载是抢了服务器的资源,并不是自身的机器加快. 6 * @author LiTaiQing 7 */ 8 public clas

【java并发】传统线程技术中创建线程的两种方式

传统的线程技术中有两种创建线程的方式:一是继承Thread类,并重写run()方法:二是实现Runnable接口,覆盖接口中的run()方法,并把Runnable接口的实现扔给Thread.这两种方式大部分人可能都知道,但是为什么这样玩就可以呢?下面我们来详细分析一下这两种方法的来龙去脉. 1. 揭秘Thread中run()方法 上面我们看到这两种方式都跟run()方法有关,所以我们来看一下Thread的源码中run()方法到底都干了什么: @Override public void run()

传统线程技术(一)

一. 传统线程创建方法 1. 覆盖Thread子类的run方法中编写详细代码 2. 在传递给Thread的Runnable对象的run方法中编写详细代码 二. 实现代码 public class TraditionalThread { public static void main(String[] args) { // 方法1:直接new一个Thread的子类.让子类run方法覆盖父类的run方法 Thread thread1 = new Thread() { @Override public

2.传统定时器技术回顾 - Timer类 TimerTask

java.util 类 Timer java.lang.Object java.util.Timer 方法摘要 void cancel()           终止此计时器,丢弃所有当前已安排的任务.  int purge()           从此计时器的任务队列中移除所有已取消的任务. void schedule(TimerTask task, Date time)           安排在指定的时间执行指定的任务. void schedule(TimerTask task, Date