Thread
-
线程 是程序中的执行线程。Java 虚拟机允许应用程序 并发 地运行多个执行线程。
-
创建新执行线程有两种方法。
-
1:一种方法是将类声明为 Thread 的子类。该子类应重写 Thread 类的 run 方法。
-
2:创建线程的另一种方法是声明实现 Runnable 接口的类。该类然后实现 run 方法。
-
线程的步骤
-
1:继承Thread类
-
2: 重写run方法
-
3:创建线程对象
-
4:启动线程:start()
注意:start和run的区别?
程序员调用start方法,然后通知JVM你去调用run方法,
程序员不要手动调用run方法,否则就会变成单线程的执行模式 -
注意:多线程中,线程的执行顺序和代码的前后顺序没关系,java中线程遵循抢占模式,随机的,程序员无法保证哪个线程先启动
-
多线程可以提高CPU的使用率
-
注意:运行在run里的程序,是多线程代码
-
常用方法
-
1:start 启动
-
2:getName 获取名称
-
3:setName 设置名称
-
4:getPriority 获取优先级
-
MAX_PRIORITY 10 最高
-
MIN_PRIORITY 1 最低
-
NORM_PRIORITY 5 默认
-
5:setPriority 设置优先级
-
注意:优先级不是绝对的,优先级高的,只是在抢夺CPU执行权的概率会提高
-
6:Thread.currentThread 获取当前线程
-
7:isAlive() 判断线程是否存活
线程有2中死亡方式
1:正常死亡 :程序执行完毕,退出run方法
2:意外死亡:程序意外终止,退出run方法 -
注意:一个线程不可以多次调用start方法
public static void main(String[] args) {
//3:创建2个线程对象
/*for(int i = 1;i<=10000;i++){
m1.start();
}*/
/*MyThread m1 = new MyThread();
MyThread m2 = new MyThread();
MyThread m3 = new MyThread();
//设置线程名称
m1.setName("线程1");
m2.setName("线程2");
m3.setName("线程3");
//获取线程的优先级
System.out.println(m1.getPriority());
System.out.println(m2.getPriority());
System.out.println(m3.getPriority());
//设置优先级
m1.setPriority(10);
m2.setPriority(1);
m3.setPriority(5);
//4:启动线程
m1.start();
//判断线程是否还存活
System.out.println(m1.isAlive());
m2.start();
m3.start();
*/
//获取当前main线程
/*Thread currentThread = Thread.currentThread();
System.out.println(currentThread);
//获取线程名称
System.out.println(currentThread.getName());
*/
MyThread m1 = new MyThread();
m1.start();
/*m1.start();
m1.start();*/
}