线程与进程
- 进程是所有线程的集合,每一个线程是进程中的一条执行路径。
- 多线程提高程序效率。
多线程运行状态:
新建状态:执行new以后,还没开始运行
就绪状态:执行了start方法以后,等待cup分配时间执行run方法
运行状态:执行run方法以后
阻塞状态:sleep、锁、阻塞队列等
死亡状态:运行完成或报出异常
1、线程的创建方式:
public class ExtendsCreate extends Thread{
public void run(){
System.out.println("继承Thread");
}
}
public class ImplementsCreate implements Runnable {
@Override
public void run() {
System.out.println("实现Runnable");
}
}
public class Base01 {
public static void main(String[] args) {
//继承Thread
new ExtendsCreate().start();
//实现Runable
new Thread(new ImplementsCreate()).start();
//匿名内部类
new Thread(){
public void run(){
System.out.println("匿名内部类");
}
}.start();
}
}
2、获取常用线程信息
@Override
public void run() {
//获取到当前执行线程
Thread thread = Thread.currentThread();
//获取当前线程编号
long id = thread.getId();
//当前线程名字
String name = thread.getName();
//线程睡眠
try {
thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
//停止线程(过期命令)
// thread.stop();
}
3、常用线程构造函数
public static void main(String[] args) {
new Thread();//1
new Thread("name");//2负值线程名字
new Thread(new ImplementsCreate());//3实现了Runable接口的对象
new Thread(new ImplementsCreate(),"name");//4
}
4、守护线程
public class ImplementsCreate implements Runnable {
@Override
public void run() {
//设置当前线程是守护线程(调用当前线程的主线程停止,该线程也会停止)
Thread thread = Thread.currentThread();
thread.setDaemon(true);
}
}
5、让其他先执行(以下方法,均不能保证每次有效,让步后cpu有可能也会马上又分配时间过来)
join():(指定线程让步)
线程当中执行到t1.join()方法时,就认为当前线程应该把执行权让给t1线程
Yield:(让步其他线程)
让步给当前正在执行的其他线程
priority:(根据优先级,获取cpu分配机会)
范围为1-10,其中10最高,默认值为5