实现多线程的方式
继承Thread类
实现Runnable接口
都要重写run方法
暂时就是这两种
继承Thread类
public class TestThread01 {
public static void main(String[] args) {
MyThread01 myThread01 = new MyThread01();
}
class MyThread01 extends Thread {
@Override
public void run() {
for (int i = 0; i < 100; i++) {
if (i % 2 == 0)
System.out.println(Thread.currentThread().getName() + ":" + i);
}
}
}
实现Runnable接口
五个步骤
1.实现继承Runnable接口的类
2.重新run方法
3.创建实现类的对象
4.将此对象作为参数传递到Thread类的构造器中,创建Thread类的对象
public Thread(Runnable target) {
init(null, target, "Thread-" + nextThreadNum(), 0);
}
5.通过Thread类的对象调用start()
public class TestThread02 {
public static void main(String[] args) {
MThread mThread = new MThread();
Thread t1 = new Thread(mThread);
t1.start();
}
}
class MThread implements Runnable {
@Override
public void run() {
for (int i = 0; i < 100; i++) {
if (i % 2 == 0) {
System.out.println(i);
}
}
}
}
Thread类的常用方法
start() 开始线程
setName() 设置线程名称
getName() 获取线程名称
currentThread 当前运行的线程
yield() 线程让步,重新公平的开始竞争cpu资源
join() 线程暂停,让join的线程完毕执行完之后,再重新开始
sleep() 线程休眠
线程的生命周期
线程的优先级
线程的优先级
Max_Priority 10
min_priority 1
NORM_PRIORITY 5 默认优先级
getPriority() 获取优先级
setPriority(int p) 设置优先级
ity 10
min_priority 1
NORM_PRIORITY 5 默认优先级
getPriority() 获取优先级
setPriority(int p) 设置优先级
说明:高优先级的线程要抢占低优先级的线程的cpu执行权,但是只是从概率上来说的,高优先级的线程高概率情况下被执行,并不意味着只有当高优先级的线程执行完后,低优先级的线程才能开始执行