zoukankan      html  css  js  c++  java
  • 线程的实现

    --------------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】

  • 相关阅读:
    谈谈分布式事务之一:SOA需要怎样的事务控制方式
    asp.net创建自定义排序用户界面
    在ASP.NET 2.0中操作数据:在GridView的页脚中显示统计信息
    Url重写技术的运用(转)
    ASP.NET 对 SqlDataSource 控件使用参数
    正则表达式分支条件与分组
    向DWR传递参数和返回参数(转)
    一位软件工程师的6年总结(转)
    ASP.NET 2.0数据教程之二十六::排序自定义分页数据
    Table控件使用示例
  • 原文地址:https://www.cnblogs.com/siwuxie095/p/6627051.html
Copyright © 2011-2022 走看看