复习多线程
Posted lwq168
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了复习多线程相关的知识,希望对你有一定的参考价值。
复习目标:
(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对象 |
以上是关于复习多线程的主要内容,如果未能解决你的问题,请参考以下文章