星空网 > 软件开发 > Java

线程Thread的基础知识学习

一.线程的基本概念

  1.线城市一个程序内部的顺序控制流。

  2.Java的线程是通过java.lang.Thread类来实现的。

  3.VM启动时会有一个由主方法{public static void main(Args[] String)}所定义的线程。

  4.可以通过创建新的Thread实例来创建新的线程。

  5.每个线程都是通过某个特定的Thread对象所对应的方法run()来完成其操作的,方法run()称为线程体。

  6.通过调用Thread类的start()方法来启动一个线程。

注意:多进程(在操作系统中能同时运行多个任务(程序));多线程(在同一应用程序中有多个顺序流同时执行)。

二.线程的建立

  1.定义线程类,实现Runnable接口(推荐,更灵活)

    Thread thread = new Threa(target);   //target为Runnable接口类型;

    Runnable中只有一个方法:public void run();  //用于定义线程运行体。

    *使用Runnable接口可以为多个线程提供共享的数据。

    在实现Runnable接口的类的run方法定义中可以使用Thread的静态方法:

      public static Thread currentThread() 获取当前线程的引用。

    

 1 public class ThreadTheory { 2   public static void main(String args[]){ 3     Runner1 runner1 = new Runner1(); 4     Thread thread = new Thread(runner1); 5     thread.start(); 6     for(int i=0;i<10;i++){ 7       System.out.println("Main Thread:"+i); 8     } 9   }10 }11 12 public class Runner1 implements Runnable {13   public void run() {14     for(int i=0;i<10;i++){15       System.out.println("Runner1:"+i);16     }17   }18 }

 

  2.继承Thread类,重写run方法:

    class MyThread extends Thread{

      public void run(){......}

    }

    然后生成该类的对象:

      MyThread myThread = new MyThread(...);

 

 1 public class ThreadTheory { 2   public static void main(String args[]){ 3     Runner2 runner2 = new Runner2(); 4     runner2.start();  //runner2本身就是一个线程了,不用再new Thread(); 5     for(int i=0;i<10;i++){ 6       System.out.println("Main Thread:"+i); 7     } 8   } 9 }10 11 public class Runner2 extends Thread {12   public void run() {13     for(int i=0;i<10;i++){14       System.out.println("Runner2:"+i);15     }16   }17 }

 

 

三.线程控制的基本方法

  线程Thread的基础知识学习

    public void interrupt()
  中断线程。

  如果当前线程没有中断它自己(这在任何情况下都是允许的),则该线程的 checkAccess 方法就会被调用,这可能抛出 SecurityException

  如果线程在调用 Object 类的 wait()wait(long)wait(long, int) 方法,或者该类的 join()join(long)join(long, int)sleep(long)sleep(long, int) 方法过程中受阻,则其中断状态将被  清除,它还将收到一个 InterruptedException

  如果该线程在可中断的通道上的 I/O 操作中受阻,则该通道将被关闭,该线程的中断状态将被设置并且该线程将收到一个 ClosedByInterruptException

  如果该线程在一个 Selector 中受阻,则该线程的中断状态将被设置,它将立即从选择操作返回,并可能带有一个非零值,就好像调用了选择器的 wakeup 方法一样。

  如果以前的条件都没有保存,则该线程的中断状态将被设置。

  抛出:
SecurityException - 如果当前线程无法修改该线程

  

注意:舒适的结束线程的方法(拒绝暴力):

    
 1 public class ThreadTheory { 2   public static void main(String args[]){ 3     MyThread myThread = new MyThread(); 4     myThread.start(); 5     try{ 6       Thread.sleep(10000); 7     }catch(InterruptedException e){} 8     myThread.stopThread();  //通过标志去结束线程 9   }10 }11 12 public class MyThread extends Thread {13   14   private boolean flag = true;15   16   public void stopThread(){17     this.flag = false;18   }19   public void run() {20     while(flag){21       System.out.println("===当前时间"+ new Date() + "===");22       try{23         sleep(1000);24       }catch(InterruptedException e){25         return;26       }27     }28   }29 }

 




原标题:线程Thread的基础知识学习

关键词:线程

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流