-
多线程总览
- 线程的概念
- 如何创建线程
- 线程的方法和特点
- 处理线程安全问题
- 其他
- 另外两种创建线程的方式
-
程序的概念
- 程序,进程,线程
-
程序:一段静态的代码
-
进程:①执行中的程序.
②电脑分配资源的基本单位.
③程序是静态的,进程是动态的. -
线程:进程进一步细化为线程,程序中的一条执行路径,CPU分配资源的最小单位.
-
JVM底层:每有一个进程就有一个JVM实例,JVM里可以有多个栈(多线程,每个线程独立拥有一个栈),而只有一个堆和方法区.
-
- 线程调度
- 分时调度:每个线程轮流使用cpu
- 抢占式调度:让优先级高的线程以大概率使用cpu,反之亦然;优先级相同,则随机.
- 理解
- 关系图1
- 关系图2
程序执行就是进程,进程中有多个线程.
- 关系图1
- 程序,进程,线程
-
创建线程的方式
- 继承Thread类
方法:①创建一个Thread类的子类.
②重写Thread类的run()方法,将要执行的操作写在方法体中.
③创建当前Thread子类的对象.
④通过对象调用start()方法.
start()方法功能:①启动线程.
②执行run()方法. - 实现Runnable接口
方法:①创建实现Runnable接口的类
②实现接口的run()方法
③创建实现类的对象
④将此对象作为参数传到Thread类构造器中.
⑤Thread类的实例调用start()方法.
- 继承Thread类
方法:①创建一个Thread类的子类.
-
线程的方法
-
线程的构造器
构造器名 说明 public Thread() 创建一个线程对象 public Thread(String name) 创建一个指定名称的线程 public Thread(Runnable target) 分配一个指定目标的线程对象 public Thread(Runnable target,String name) 分配一个指定名称和指定对象的线程对象 -
线程的常用方法
方法名 说明 start() ①启动线程②调用run()方法 run() 将线程要执行的操作,声明在run()方法中 currentThread() 静态方法,返回当前执行代码所在线程 getName() 获得线程名 setName(String name) 设置线程名 sleep(int num) 静态方法,线程休息num毫秒
-