• Java_多线程入门


    Java_多线程基础(一)                                                                        

    (一)线程与进程                         

    (二)为什么要使用多线程?       

    (三)多线程使用中的注意事项   

    (四)多线程的常用创建方式       

     

    (一)线程与进程                                                                                  

    什么是进程?

    每个正在系统上运行的程序都是一个进程,每个进程包含一到多个线程,其中必定有一个主线程。

    什么是线程?

    线程是一组指令的集合,是一条独立的运行线路,它可以在程序里独立执行。

    一条线程的死亡不影响其它线程的运行。

    总结:

    进程是所有线程的集合,每一个线程是进程中的一条执行路径。

    (二)为什么要使用多线程?                                                                

    多线程的好处是高程序的效率。

    (三)多线程使用中的注意事项                                                            

    使用继承Thread类还是使用实现Runnable接口好?

     使用实现Runnable接口好,原因:实现了接口还可以继续继承,继承了类不能再继承。

    启动线程是使用调用start方法还是run方法?

    开启线程不是调用run方法,而是start方法

    调用run只是使用实例调用方法。

    (四)多线程的常用创建方式                                                                

    1)通过继承Thread类重写Run方法创建多线程

    首先:创建一个继承了Thread类的子类,再在子类中重写Run()方法;

    代码如下:

    public class CreateThread extends Thread {

      // run方法中 编写 多线程 需要执行的代码

      public void run() {

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

        System.out.println("i:" + i);

        }

      }

    }

    然后:在main方法中通过new一个子类的实体来创建一个线程,并调用start()方法来实现多线程;

    代码如下:

    public class ThreadDemo {

      public static void main(String[] args) {

        System.out.println("-----多线程创建开始-----");

        // 1.创建一个线程

        CreateThread createThread = new CreateThread();

        // 2.开始执行线程 注意 开启线程不是调用run方法,而是start方法

        System.out.println("-----多线程创建启动-----");r

        createThread.start();

        System.out.println("-----多线程创建结束-----");

      }

    }

    2)通过实现Runable接口创建多线程

    首先:创建一个实现 Runnable接口的实现类;

    代码如下:

    public class CreateRunnable implements Runnable { 

      @Override

      // run方法中 编写 多线程 需要执行的代码

      public void run() {

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

        System.out.println("i:" + i);

        }

      }

    }

    然后:在main方法中通过new一个实现类的对象来创建一个线程,同时new一个Thread类的对象 并将实体类对象作为参数传递给Thread类,最后通过使用Thread对象调用start()方法来实现多线程;

    代码如下:

    public class ThreadDemo2 {

      public static void main(String[] args) {

        System.out.println("-----多线程创建开始-----");

        // 1.创建一个线程

        CreateRunnable createThread = new CreateRunnable();

        // 2.开始执行线程 注意 开启线程不是调用run方法,而是start方法

        System.out.println("-----多线程创建启动-----");

        Thread thread = new Thread(createThread);

        thread.start();

        System.out.println("-----多线程创建结束-----");

      }

    }

    3)使用匿名内部类创建多线程

    概念:匿名内部类就是没有名字的内部类。这是Java为了方便我们编写程序而设计的一个机制。因为有时候有的内部类只需要创建一个它的对象就可以了,以后再不会用到这个类,这时候使用匿名内部类就比较合适,而且也免去了给它取名字的烦恼。

    如果满足下面的一些条件,使用匿名内部类是比较合适的:
    ·只用到类的一个实例。
    ·类在定义后马上用到。
    ·类非常小(SUN推荐是在4行代码以下)
    ·给类命名并不会导致你的代码更容易被理解。


    在使用匿名内部类时,要记住以下几个原则:
    ·匿名内部类不能有构造方法。
    ·匿名内部类不能定义任何静态成员、方法和类。
    ·匿名内部类不能是public,protected,private,static。
    ·只能创建匿名内部类的一个实例。
    ·一个匿名内部类一定是在new的后面,用其隐含实现一个接口或实现一个类。
    ·因匿名内部类为局部内部类,所以局部内部类的所有限制都对其生效

    用匿名内部类创建多线程有两种方式,和创建一个线程是一样的。

    ①:继承Thread:

    代码如下:

    public class Test{

      public static void main(String[] args) {

          System.out.println("-----多线程创建开始-----");

          new Thread(new Runnable() {

          public void run() {

            //do something

          }

        }).start();

         System.out.println("-----多线程创建结束-----");

      }

    }

    ②:实现 Runnable接口:

    代码如下:

    public class Test{

      public static void main(String[] args) {

          System.out.println("-----多线程创建开始-----");

          new Thread(new Runnable() {

          public void run() {

            //do something

          };
        }) { }.start();

         System.out.println("-----多线程创建结束-----");

      }

    }

  • 相关阅读:
    Jmeter常用脚本开发之JDBC请求
    Jmeter常用脚本开发之Java请求
    Jmeter常用脚本开发之FTP请求
    Jmeter常用脚本开发之Debug Sampler
    Jmeter常用脚本开发之Beanshell Sampler
    Jenkins构建.net项目
    Charles基本使用
    [daily] emacs显示file name buffer的全路径
    [dev] 刷HHKP的一般流程及常见错误(多图慎点)
    [dev][go] 入门Golang都需要了解什么
  • 原文地址:https://www.cnblogs.com/lys-song/p/12168744.html
Copyright © 2020-2023  润新知