zoukankan      html  css  js  c++  java
  • Java学习之多线程(定义)

    进程:正在运行中的程序
    线程:负责执行程序的控制单元(执行路径)
    一个进程中可以有多个执行路径,称之为多线程
    一个进程中至少要有一个线程

    创建新执行线程有两种方式

    一、继承Thread类
    步骤:
    1、定义一个类继承Thread类
    2、覆盖Thread类中的run方法(run方法中就是线程要执行的任务代码)
    3、创建Thread子类对象
    4、调用start方法开启线程,执行run方法

     1 class Demo extends Thread
     2 {
     3     private String name;
     4     Demo(String name)
     5     {
     6         this.name = name;
     7     }
     8     
     9     void run()
    10     {
    11         for(x=0;x<9;x++)
    12         {
    13             System.out.println(name+"----"+x+"当前执行run方法的线程名称"+Thread.currentThread().getName());
    14         }
    15     }
    16 }
    17 
    18 class ThreadDemo
    19 {
    20     public static void main(String[] args)
    21     {
    22         Demo d1=new Demo("zhangsan");
    23         
    24         Demo d2=new Demo("lisi");
    25         d1.start();
    26         d2.start();
    27         
    28         System.out.println("当前执行run方法的线程名称"+Thread.currentThread().getName());
    29     }
    30 }

    问题:这个Demo类必须继承Thread类,那如果Demo 有父级(class Demo extends Parent)的话,是不是就无法再继承类,那么就想能不能实现接口

    二、实现Runnable接口(开发中较为常用)
    步骤:
    1、定义一个类实现Runnable接口
    2、重写接口中的run方法(run方法中就是线程要执行的任务代码)
    3、通过Thread类创建线程对象,并将Runnable接口的子类对象作为Thread类的构造函数参数进行传递
    4、调用线程对象的start方法开启线程,执行run方法

     1 class Demo implements Runnable
     2 {
     3     private String name;
     4     Demo(String name)
     5     {
     6         this.name = name;
     7     }
     8     
     9     public void run()
    10     {
    11         for(x=0;x<9;x++)
    12         {
    13             System.out.println(name+"----"+x+"当前执行run方法的线程名称"+Thread.currentThread().getName());
    14         }
    15     }
    16 }
    17 
    18 class ThreadDemo
    19 {
    20     public static void main(String[] args)
    21     {
    22         new Thread(new Demo("wangwu")).start();
    23         new Thread(new Demo("zhaoliu")).start();
    24         System.out.println("当前执行run方法的线程名称"+Thread.currentThread().getName());
    25     }
    26 }

    Thread.currentThread();获取当前运行线程
    Thread.currentThread().getName();方法获取线程名称

  • 相关阅读:
    NGINX将PHP带参数的URL地址重定向二级或多级域名访问
    mysql优化 ON DUPLICATE KEY UPDATE
    修改Nginx配置文件来隐藏index.php
    Redis 如何保持和MySQL数据一致【二】
    Redis 如何保持和MySQL数据一致【一】
    Redis计算地理位置距离-GeoHash
    了解一下Redis队列【缓兵之计-延时队列】
    来了解一下Redis的分布式锁
    Kafka学习之(七)搭建kafka可视化服务Kafka Eagle
    include与jsp:include区别
  • 原文地址:https://www.cnblogs.com/WarBlog/p/12068986.html
Copyright © 2011-2022 走看看