复习目标:
(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对象 |
原文:https://www.cnblogs.com/LWQ168/p/9175722.html