第一章 Java多线程技能

2021-06-29 23:07

阅读:522

标签:soscw   多线程   oid   启动顺序   运行   ack   run方法   extends   实现   

Thread类

核心方法较多

如: 线程的启动,

      如何使线程暂停,

      如何使线程停止,

      线程的优先级,

     线程安全相关的问题

1.1进程和线程的概念及线程的优点

多线程的优点:可以最大限度地利用CPU的空闲时间来处理其他的任务

单任务环境(同步)   排队等待

多任务(多线程)   异步      大大利用CPU

1.2使用多线程

一个进程正在运行时至少会有1个线程在运行

main的线程在执行main()方法中的代码

public class Test {
  public static void main(String[] args) {
    System.out.println(Thread.currentThread().getName());
}
}

       1.2.1继承Thread类

实现多线程编程的方式:1.继承Thread类,2.实现Runnable接口

Thread类实现了Runnable接口,之间具有多态关系,不支持多继承,所以为了多继承,可以一边实现一边继承

class Thread implements Runnable

 

 1.继承Thread
 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("运行结束");
}
}

线程是一个子任务,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.html


评论


亲,登录后才可以留言!