什么是进程?什么是线程?
进程是应用程序的一次执行,是多个线程的集合。
线程是进程的基本单位,是进程中的一条执行路径,线程只是一条执行路径。,一个进程至少有一个线程。
为什么要使用多线程?
多线程的好处是提高程序的效率。例如:百度云多线程下载、分批发送短信。
多线程的创建方式
- 继承Thread类
public class ThreadDemo extends Thread{
@Override
public void run() {
for (int i=0;i<20;i++){
System.out.println("run : i = "+i);
}
}
public static void main(String[]args){
ThreadDemo threadDemo = new ThreadDemo();
threadDemo.start();
for (int i=0;i<20;i++){
System.out.println("main : i = "+i);
}
}
}
- 继承Runnable接口
public class RunnableDemo implements Runnable{
@Override
public void run() {
for (int i=0;i<20;i++){
System.out.println("run : i = "+i);
}
}
public static void main(String[]args){
RunnableDemo runnableDemo = new RunnableDemo();
new Thread(runnableDemo).start();
for (int i=0;i<20;i++){
System.out.println("main : i = "+i);
}
}
}
- 匿名内部类
public class ThreadDmo {
public static void main(String[]args){
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
for (int i=0;i<20;i++){
System.out.println("run : i = "+i);
}
}
});
thread.start();
for (int i=0;i<20;i++){
System.out.println("main : i = "+i);
}
}
}
常用线程api
常用线程api方法 | |
---|
start() | 启动线程 |
currentThread() | 获取当前线程对象 |
getID() | 获取当前线程ID Thread-编号 该编号从0开始 |
getName() | 获取当前线程名称 |
sleep(long mill) | 休眠线程 |
join() | oin作用是让其他线程变为等待, t1.join();// 让其他线程变为等待,直到当前t1线程执行完毕,才释放。 |
yield() | 暂停当前正在执行的线程,并执行其他线程。(可能没有效果) |
Stop() | 停止线程 |
常用线程构造函数 | |
Thread() | 配一个新的 Thread 对象 |
Thread(String name) | 分配一个新的 Thread对象,具有指定的 name正如其名。 |
Thread(Runable r) | 分配一个新的 Thread对象 |
Thread(Runable r, String name) | 分配一个新的 Thread对象 |
守护线程
Java中有两种线程,一种是用户线程,另一种是守护线程。
用户线程是用户自定义创建的线程,主线程停止,用户线程不会停止
守护线程当进程不存在或主线程停止,守护线程也会被停止。
使用setDaemon(true)方法设置为守护线程
线程的生命周期
