第一章 Java多线程技能
2021-06-29 23:07
标签:soscw 多线程 oid 启动顺序 运行 ack run方法 extends 实现 Thread类 核心方法较多 如: 线程的启动, 如何使线程暂停, 如何使线程停止, 线程的优先级, 线程安全相关的问题 1.1进程和线程的概念及线程的优点 多线程的优点:可以最大限度地利用CPU的空闲时间来处理其他的任务 单任务环境(同步) 排队等待 多任务(多线程) 异步 大大利用CPU 1.2使用多线程 一个进程正在运行时至少会有1个线程在运行 main的线程在执行main()方法中的代码 1.2.1继承Thread类 实现多线程编程的方式:1.继承Thread类,2.实现Runnable接口 Thread类实现了Runnable接口,之间具有多态关系,不支持多继承,所以为了多继承,可以一边实现一边继承 1.继承Thread 运行代码类如下 线程是一个子任务,CPU以不确定的方式或者以随机的时间来调用线程中的run方法,所以就会出现先运行结束再打印MyThread的情况 注意事项:如果多次调用start(方法会出现异常) 演示线程的随机性 Thread类中的Start()方法通知"线程规划期"此线程已经准备就绪,等待调用线程的Run()方法.这个过程其实就是让系统安排一个时间来调用Thread类中的Run()方法,也就是使线程的到运行,启动线程具有异步执行的效果 如果调用thread.run()就不是异步,而是同步,那么此线程并不交给"线程规划器"来处理,而是由main主线程来调用run()方法,也就是必须等run(),方法中的代码执行完后才可以执行后面的代码 异步执行效果图
注意事项:执行Start()方法的顺序不代表启动线程的顺序,线程启动顺序与start()无关 1.2.1实现Runnable接口 如果创建的线程已经有父类了 ,则不能继承Thread类,则通过实现Runnable接口 第一章 Java多线程技能 标签:soscw 多线程 oid 启动顺序 运行 ack run方法 extends 实现 原文地址:https://www.cnblogs.com/tanlei-sxs/p/9644147.htmlpublic class Test {
public static void main(String[] args) {
System.out.println(Thread.currentThread().getName());
}
}
class Thread implements Runnable
2.重写run()方法,写线程要执行的任务的代码public class MyThread extends Thread{
@Override
public void run() {
// TODO Auto-generated method stub
super.run();
System.out.println("MYthread");
}
}public class Run {
public static void main(String[] args) {
MyThread myThread = new MyThread();
myThread.start();
System.out.println("运行结束");
}
}