• 线程的实现


    --------------siwuxie095

       

       

       

       

       

       

    在Java中,线程的实现方式有 2 种:

       

    (1)继承 Thread 类

       

    2)实现 Runnable 接口

       

       

       

       

    Thread 类:

       

    Thread 类是在 java.lang 包中定义的,继承 Thread 类必须重写 run() 方法

       

       

    定义格式:

       

    class className extends Thread{

    run(){}

    }

       

       

       

       

    Runnable 接口:

       

    Runnable 接口是在 java.lang 包中定义的,实现 Runnable 接口必须重写 run() 方法

       

       

    定义格式:

       

    class className implements Runnable{

    run(){}

    }

       

       

       

       

       

    示例:

       

    工程结构目录如下:

       

       

       

       

    MyThread.java

       

    package com.siwuxie095.thread;

       

    //MyThread是一个线程,继承自 Thread

    public class MyThread extends Thread {

     

    private String name;

     

    //构造方法,传入参数 name,用于标识当前线程

    public MyThread(String name) {

    this.name=name;

    }

     

    //重写父类 Thread run() 方法

    @Override

    public void run() {

    for (int i = 0; i < 10; i++) {

    System.out.println(name+"-"+i);

     

    }

    super.run();

    }

     

    }

       

       

    MyRunnable.java:

       

    package com.siwuxie095.thread;

       

    //MyRunnable 是一个线程,需要实现 Runnable 接口

    public class MyRunnable implements Runnable {

     

    private String name;

     

    //构造方法,传入参数 name,用于标识当前线程

    public MyRunnable(String name) {

    this.name=name;

    }

     

     

       

    //复写接口中的抽象方法 run()

    public void run() {

    for (int i = 0; i < 10; i++) {

    System.out.println(name+"-"+i);

    }

    }

       

    }

       

       

    ThreadDemo.java(主类):

       

    package com.siwuxie095.thread;

       

    public class ThreadDemo {

       

    public static void main(String[] args) {

    //实例化线程对象

    MyThread t1=new MyThread("A");

    MyThread t2=new MyThread("B");

     

    //线程的启动是通过 start()方法,而不是 run() 方法

    //注意:只有 Thread 才有 start()方法

    //多线程是一种并发机制,谁抢到CPU资源谁就执行

    t1.start();

    t2.start();

     

     

    MyRunnable r1=new MyRunnable("C");

    MyRunnable r2=new MyRunnable("D");

    //很明显,Runnable是一个接口,没有 start() 方法,

    //(接口中只有全局常量和公共抽象方法,而 Runnable 接口中只有 run()抽象方法)

    //

    // Thread 有一个构造方法可以传入 Runnable 对象

    //依然通过 Thread start() 方法启动 Runnable 的线程

    Thread t3=new Thread(r1);

    Thread t4=new Thread(r2);

    t3.start();

    t4.start();

     

    }

       

    }

       

       

       

    运行一览:多线程的并发

       

       

       

       

       

       

       

       

    【made by siwuxie095】

  • 相关阅读:
    [转] 微服务架构
    vue拦截器实现统一token,并兼容IE9验证
    一句话 道出设计模式
    老话闲说,关于身份证号码的验证
    值得珍藏的HTTP协议详解
    微信内嵌H5网页 解决js倒计时失效
    使用JavaScript重定向URL参数
    Nodejs --我自己的学习笔记
    ONLY三行脚本 SQL数据恢复到指定时间点
    [转] 数据库加锁 sql加锁的
  • 原文地址:https://www.cnblogs.com/siwuxie095/p/6627051.html
Copyright © 2020-2023  润新知