学习笔记——多线程
多线程的概念
首先应当先了解线程和进程的区别:
(1)进程:在一个操作系统中,每一个独立执行的程序都称之为一个进程,也就是“正在运行的程序”。
(2)线程:比进程还要小的运行单位,一个进程包含多个线程,可以看做一个子程序。
创建多线程的两种方式
(1)继承Thread类创建多线程
class MyThread extends Thread{
@Override
public void run() {
System.out.println("线程已创建!");
}
}
public class MyThreadTest{
//测试线程创建成功
public static void main(String[] args) {
MyThread myThread = new MyThread();
myThread.start();//启动线程
}
}
(2)实现Runnable接口创建多线程
public class MyThread implements Runnable{
@Override
public void run() {
System.out.println("线程已创建!");
}
public static void main(String[] args) {
//测试线程是否创建成功
MyThread mythread= new MyThread();
Thread thread = new Thread(mythread);
thread.start();
}
}
线程的生命周期及状态转换
1、线程的五种状态:
1)新建状态(New)
2)就绪状态(Runnable)
3)运行状态(Running)
4)阻塞状态(Blocked)
5)死亡状态(Terminated)
2、 线程状态间的转换:
线程的调度
1、优先级
程序可以设置优先级来提高获得CPU执行的机会,优先级越高获得CPU执行的机会就越大。
!!!
重点:优先级高的不一定是先执行,只能说越大概率先执行。
2、线程中部分方法介绍
方法 | 描述 |
---|---|
sleep(long millis) | 当前正在执行的线程暂停一段时间,让线程进入阻塞状态 |
yield() | 当前正在执行的线程暂停,让线程进入就绪状态 |
join() | 线程被阻塞,直到join方法加入进来的线程执行完毕后才会继续执行 |
多线程同步
同步的方法:
synchronized 返回值类型 方法名([参数1,……]){}