zoukankan      html  css  js  c++  java
  • 多线程第一篇

    一、什么是线程?什么是进程?

      进程:我们的电脑上的每个软件都可看作一个进程,以一个浏览器为例。

      线程:线程可以看作是浏览器上打开的一个网页,一个网页就是一个线程。多线程的存在让我们可以在同一时间进行多个动作,比如边听歌边聊天。

     我们执行java程序,开启jvm,就是开了一个进程。

    二、多个线程是同时运行的吗?

      这个要看你的电脑处理器是几核的,如果一核处理器,那么多个线程就会被安排快速的交替执行。多核处理器,会让几个线程同时进行。

    三、创建多线程

      创建多线程有两种方式,一般都这样说。但是创建多线程只能通过Thread类,那为什么还要说有两种,等下说,我们先看怎么创建线程。

      首先说明线程的执行步骤:thread对象调用start()方法,strat()方法自动 调用run()方法,run()方法中写的线程的业务逻辑,从而实现线程的执行单元

      (1)实现Runnable接口,重写run()方法  

    //Runnable的源码
    public interface Runnable{
      public void run();      
    }
    
    
    //实现Runnable接口
    public class RunnableImpl implement Runnable{
         private int i;
         public Runnable(int i){
            this.i=i;  
         }  
         public void run(){
             System.out.println(i);
         }
    }    

    public class ceshi{
      public static void main(String[] arg){
        RunnableImpl runnableImpl=new RunnableImpl(2);
        Thread thread=new Thread(runableImpl,"threadName");
        //开启线程
        thread.start();
      }
    }

      (2)继承Thread类,重写run()方法(Thread类在源码中也是实现了Runnable接口)

    //继承thread类
    public class ThreadE extends Thread{
      //这个成员变量不是设置线程名字的,只是用来打印用的   
      private String threadname;
       
      public ThreadE(String threadname){
             this.threadname=threadname; 
      }    
       
      public void run(){
        System.out.println(threadname);  
      }    
    }
    
    
    public class ceshi2{
       public static void main(String[] arg){
            ThreadE threadE=new ThreadE("这是继承Thread类实现的");
            Thread thread=new Thread(threadE);
          //开启线程 thread.start(); } }

     上文提到的,我们对创建线程的方式到底是一种还是两种存在疑问。现在进行说明:

      在JDK中代表线程的只有Thread类,所以创建线程之能通过Thread类。上面的两种方法可以说是对线程的实现。我们观察到,上面两种方法中,最终实现线程都要通过"new  Thread()"。

    说明new Thread()中的参数 :

      Thread类中有几个构造方法,我们最常见的是这个 :

          Thread(Runnable target,String ThreadName);

          第一个参数是实现Runnable接口的类的实例,第二个参数是为线程设置名字。也可以不设置名字,那就是用Thread(Runnable target);

        在Thread类中run()方法中,有如下源码:  

    @Override
    public void run(){
        //如果有Runnable的实现类的对象,就用对象的run()方法  
         if(target!=null){
            target.run();
         }
    }

      如果直接new Thread()来创建线程,就会调用run()方法,如果实现了Runnable类或者继承了Thread类,就会调用目标类中重写后的run()方法。

  • 相关阅读:
    jQuery
    jQuery
    jQuery
    jQuery
    jQuery 遍历- 过滤:缩小搜索元素的范围
    jQuery 遍历
    jQuery 遍历
    jQuery 遍历
    jQuery 遍历:jQuery 遍历 什么是遍历?
    jQuery 尺寸:处理元素和浏览器窗口的尺寸
  • 原文地址:https://www.cnblogs.com/fbbg/p/13991676.html
Copyright © 2011-2022 走看看