码迷,mamicode.com
首页 > 编程语言 > 详细

复习多线程

时间:2018-06-14 01:15:39      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:art   string   程序   --   lsp   print   时间   运行   nts   

复习目标:

(1)线程与进程

(2)为什幺使用多线程

(3)多线程应用场景

(4)常用的多线程创建方式

(5)线程生命周期

线程与进程的区别:

  每一个在系统上运行的程序都是一个进程。每个进程包含一到多个线程。线程是一组指令的集合,它可以在程序里独立执行。线程基本上是轻量级的进程,它负责在单个程序里执行多任务。

  使用多线程可以把占据时间长的程序中的任务放到后台去处理,是程序运行速度加快。在一些等待的任务实现上如:用户输入、文件读写和网络收发数据等。

  如果有大量的线程,会影响性能,因为操作系统需要在它们之间切换,更多的线程需要更多的内存空间,线程的终止需要考虑其对程序运行的影响。需要防止线程死锁的情况。

总结:进程是所有线程的集合,每一个线程是进程中的一条执行路径。

为什幺要使用多线程:

  为了提高程序的效率。

多线程应用场景:

  主要能体现到多线程提高程序效率。举例: 迅雷多线程下载、分批发送短信等

常用的多线程创建方式:

  第一种继承Thread类,重写run方法

class CreateThread extends Thread{
	public void run(){
		for(int i=0;i<10;i++){
			System.out.println("i:"+i);
		}
	}
}

public class ThreadDemo {
	public static void main(String[] args) {
		System.out.println("---多线程创建开始-----");
		//1.创建一个线程
		CreateThread createThread=new CreateThread();
		//2.开始执行线程 注意:开始线程不是调用run方法,而是start方法
		System.out.println("---多线程创建启动---");
		createThread.start();
		System.out.println("---多线程创建结束-----");
	}

}

技术分享图片

调用start方法后,代码并没有从上往下执行,而是有一条新的执行分之。

  第二种实现Runnable接口,重写run方法

 

class CreateRunnable implements Runnable{

	@Override
	public void run() {
		for (int i = 0; i< 10; i++) {
			System.out.println("i:" + i);
		}
	}
	
}
public class ThreadDemoTwo {
	public static void main(String[] args) {
		System.out.println("-----多线程创建开始-----");
		CreateRunnable createThread=new CreateRunnable();
		System.out.println("-----多线程创建启动-----");
		Thread thread=new Thread(createThread);
		thread.start();
		System.out.println("-----多线程创建结束-----");
	}
}

 

  技术分享图片

第三种使用匿名内部类方式

 

public static void main(String[] args) {
		System.out.println("--多线程创建开始---");
		Thread thread=new Thread(new Runnable(){
			@Override
			public void run() {
				for (int i = 0; i< 10; i++) {
					System.out.println("i:" + i);
				}
			}
		});
		thread.start();
		System.out.println("--多线程创建结束----");
	}

  技术分享图片

使用继承Thread类好还是实现Runnable接口好?

  使用实现Runnable接口好,因为实现了接口还可以继承,继承了类就不能再继承了。

启动线程是使用调用start方法还是run方法?

  开始线程不是调用run方法,而是start方法。

获取线程对象以及名称

常用i线程api方法

start() 启动线程
currentThread() 获取当前线程对象
getID()  获取当前线程id   Thread-编号   该编号从0开始
gatName()  获取当前线程名称
sleep(long mill)  休眠线程
Stop() 停止线程
常用线程构造函数
Thread()  分配一个新的Thread对象
Thread(String name)  分配一个新的Thread对象,具有指定的name正如其名
Thread(Runnable r)   分配一个新的Thread对象
Thread(Runnable r,String name)  分配一个新的Thread对象

 

复习多线程

标签:art   string   程序   --   lsp   print   时间   运行   nts   

原文地址:https://www.cnblogs.com/LWQ168/p/9175722.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!