本人所有文章,只属学习整理及个人理解!有误还望谅解并指出,谢谢!持续更新中…
创建多线程程序
第一中方式:创建 Thread 类的子类
java.lang.Thread 类,是描述线程的类,我们想要实现多线程程序,就必须继承 Thread 类
实现步骤:
1、创建一个 Thread 类的子类。
2、在 Thread 类的子类中重写 Thread 类中的 run 方法,设置线程任务(开启线程要做什么?)。
3、创建 Thread 类的子类对象。
4、调用 Thread 类中的方法 start 方法,开启新的线程,执行 run 方法。
void start() 使该线程开始执行 , Java 虚拟机调用该线程的 run 方法。
public class MyThreadTest {
public static void main(String[] args) {
MyThreadOne myThreadOne = new MyThreadOne();
myThreadOne.start();
/*
Thread-0:0
Thread-0:1
Thread-0:2
Thread-0:3
Thread-0:4
Thread-0:5
Thread-0:6
Thread-0:7
Thread-0:8
Thread-0:9
*/
}
}
public class MyThreadOne extends Thread{
@Override
public void run() {
for (int i = 0; i < 10; i++) {
System.out.println(Thread.currentThread().getName() +":"+i);
}
}
}
两个线程并发地运行;当前线程(main线程)和另一个线程(执行其 run 方法)。
多次启动一个线程是非法的。特别是当线程已经结束执行后,不能再重新启动。
Java 程序属于抢占式调度,那个线程的优先级高,那个线程优先执行;同一个优先级,随机选择一个执行
接着看上面修改之后的案例:
public class MyThreadTest {
public static void main(String[] args) {
MyThreadOne myThreadOne = new MyThreadOne();
myThreadOne.start();
for (int i = 0; i < 10; i++) {
System.out.println(Thread.currentThread().getName() +":"+i);
}
/*
main:0
main:1
Thread-0:0
Thread-0:1
Thread-0:2
Thread-0:3
Thread-0:4
main:2
main:3
main:4
main:5
main:6
main:7
main:8
main:9
Thread-0:5
Thread-0:6
Thread-0:7
Thread-0:8
Thread-0:9
*/
}
}