• 线程的实现


    1.在java中,线程的实现由2种

    (1).继承Thread类

    (2).实现Runnable接口

    2.Thread类

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

    定义格式:

    class className extends Thread{

      run(){}

    }

    3,Runnable接口

    定义格式:

    class RunnableName implements Runnable{

      run(){}

    4.Thread类项目结构

    (1).

     (2).MyThread.java

    package thread;

    public class MyThread extends Thread{
    private String name;

    //构造方法传递一个参数来标识我当前是哪一个线程
    public MyThread(String name) {
    this.name=name;
    }
    @Override
    public void run() {
    for (int i = 0; i < 10; i++) {
    System.out.println(name +":"+i);
    }
    }
    }

    (3).ThreadDemo.java

    package thread;

    public class ThreadDemo {

    public static void main(String[] args) {
    //创建两个线程实现线程的并发机制
    MyThread a=new MyThread("A");
    MyThread b=new MyThread("B");
    a.run();
    b.run();
    }
    }

    启动项目截图:

     线程应该是并行执行的,说明启动线程不应该是run()方法

    调用start()方法启动线程

    package thread;

    public class ThreadDemo {

    public static void main(String[] args) {
    MyThread a=new MyThread("A");
    MyThread b=new MyThread("B");
    //a.run();
    //b.run();
    a.start();
    b.start();
    }
    }

     调用start()方法说明线程并行执行

    5.Runnable接口项目结构
    (1)

     (2).MyRunnable.java

    package thread;

    import org.omg.CORBA.StringHolder;

    public class MyRunnable implements Runnable{
    private String name;

    //构造方法,用来判断是哪个线程在执行
    public MyRunnable(String name) {
    this.name=name;
    }
    @Override
    public void run() {
    for (int i = 0; i < 10; i++) {
    System.out.println(name+":"+i);
    }
    }
    }


    (3).TestDemo.java

    package thread;

    public class ThreadDemo {

    public static void main(String[] args) {
    MyRunnable r1=new MyRunnable("A");
    MyRunnable r2=new MyRunnable("B");
    //因为Runnable接口不存在statrt()启动方法,所以需要新建一个线程
    //通过Thread启动
    Thread t1=new Thread(r1);
    Thread t2=new Thread(r2);
    t1.start();
    t2.start();
    }
    }
    (4).启动项目截图

     说明线程并行执行

  • 相关阅读:
    socket入门教程
    线程间操作无效: 从不是创建控件“xxxxxxxx”的线程访问它。
    Socket教程
    Windows 2008 R2防火墙,允许被ping
    Miller_rabin算法+Pollard_rho算法 POJ 1811 Prime Test
    Pollard rho算法+Miller Rabin算法 BZOJ 3668 Rabin-Miller算法
    Miller-Rabin算法 codevs 1702 素数判定 2
    快速幂 cojs 1130. 取余运算
    中国剩余定理 hdu 3579
    中国剩余定理 hdu 1573 X问题
  • 原文地址:https://www.cnblogs.com/curedfisher/p/11974561.html
Copyright © 2020-2023  润新知