J-基础-线程-线程创建与使用
程序员文章站
2022-06-24 15:03:55
创建多线程方式1:1.创建Thread类的子类*java。lang。Thread类:是描述线程的类,要实现多线程,必须继承Thread*步骤:1.创建一个Thread类的子类2.子类重写ruan方法,run方法中设置任务3.new Thread类的子类对象4.调用Thread的start方法,开启线程,执行run创建多线程方式2:*步骤:1.声明实现Ruanable接口的类2.实现run方法,分配任务3.创建实例4.创建Thread时将实例作为参数传入并启用。*注:1.开启多线....
创建多线程方式1:
1.创建Thread类的子类
*java。lang。Thread类:是描述线程的类,要实现多线程,必须继承Thread
*步骤:
1.创建一个Thread类的子类
2.子类重写ruan方法,run方法中设置任务
3.new Thread类的子类对象
4.调用Thread的start方法,开启线程,执行run
创建多线程方式2:
*步骤:
1.声明实现Ruanable接口的类
2.实现run方法,分配任务
3.创建实例
4.创建Thread时将实例作为参数传入并启用。
*注:1.开启多线程,多线程之间是并发执行
2.多次开启同一线程非法,报错
3.java是抢占调度,采用最高优先级调度,哪个线程优先级高调用那个,相同时需要抢占调度
主方法:
/*
创建多线程方式1:
1.创建Thread类的子类
*java。lang。Thread类:是描述线程的类,要实现多线程,必须继承Thread
*步骤:
1.创建一个Thread类的子类
2.子类重写ruan方法,run方法中设置任务
3.new Thread类的子类对象
4.调用Thread的start方法,开启线程,执行run
创建多线程方式2:
*步骤:
1.声明实现Ruanable接口的类
2.实现run方法,分配任务
3.创建实例
4.创建Thread时将实例作为参数传入并启用。
*注:1.开启多线程,多线程之间是并发执行
2.多次开启同一线程非法,报错
3.java是抢占调度,采用最高优先级调度,哪个线程优先级高调用那个,相同时需要抢占调度
*/
public class MainThread {
public static void main(String[] args) {
//第一种创建多线程方法
//3.创建Thread类的子类对象
MainThreadRun mtr = new MainThreadRun();
//4.调用Thread的start方法,开启线程,执行run
mtr.start();
//第二种创建多线程方法
//3.创建实例
MainThreadRun2 mtr2 = new MainThreadRun2();
//4.创建Thread时将实例作为参数传入并启用。
new Thread(mtr2).start();
for (int i = 0; i < 9000; i++) {
System.out.println("main执行"+i);
}
}
}
方法1类:
/*
第一种方法:
MianThread的调用,
继承父类Thread
*/
public class MainThreadRun extends Thread{
//重写run,线程调用,设置线程任务
//多线程调用方法1
@Override
public void run() {
for (int i = 0; i < 200; i++) {
System.out.println("方法1线程调用"+i);
}
}
}
方法2类:
/*
第二种方法:
ianThread的调用,
实现 Runnable 接口的类。该类然后实现 run 方法。然后可以分配该类的实例,在创建 Thread 时作为一个参数来传递并启动。
*/
public class MainThreadRun2 implements Runnable {
@Override
public void run() {
for (int i = 0; i < 9000; i++) {
System.out.println("第二种线程调用"+i);
}
}
}
程序执行结果:
两只实现方式区别:
如果一个类继承Thread,则不适合资源共享。但是如果实现了Runable接口的话,则很容易的实现资源共享。
Rannable接口创建多线程程序的好处:
(1)避免了单继承的局限性。
新建类继承Thread类后不能继承其他类,而先建实现类在实现了Rannable接口同时还可以还可以实现其它接口。
(2)增强了程序可扩展性,达到了解耦。
实现Rannable接口的方式,把设置线程任务和开启线程任务进行分离。
实现类中重写run()方法,设置任务。主方法中创建Thread类对象,调用start方法,用来开启线程。
原理分析:
程序执行原理:
多线程分析:
链接1:
为什么要调用start而不是run
本文地址:https://blog.csdn.net/qq_40811542/article/details/112866279