zoukankan      html  css  js  c++  java
  • java

    1.继承Thread
      * 定义类继承Thread
      * 重写run方法
      * 把新线程要做的事写在run方法中
      * 创建线程对象
      * 开启新线程, 内部会自动执行run方法


      public class Demo2_Thread {
        public static void main(String[] args) {
          MyThread mt = new MyThread();    //4,创建自定义类的对象
          mt.start();    //5,开启线程

          for(int i = 0; i < 3000; i++) {
          System.out.println("bb");
          }
        }
      }
      class MyThread extends Thread {    //1,定义类继承Thread
        public void run() {    //2,重写run方法
        for(int i = 0; i < 3000; i++) {    //3,将要执行的代码,写在run方法中
        System.out.println("aaaaaaaaaaaaaaaaaaaaaaaaaaaa");
        }
      }
    }

    * 2.实现Runnable
      * 定义类实现Runnable接口
      * 实现run方法
      * 把新线程要做的事写在run方法中
      * 创建自定义的Runnable的子类对象
      * 创建Thread对象, 传入Runnable
      * 调用start()开启新线程, 内部会自动调用Runnable的run()方法

      public class Demo3_Runnable {
        public static void main(String[] args) {
          MyRunnable mr = new MyRunnable();    //4,创建自定义类对象
          //Runnable target = new MyRunnable();
          Thread t = new Thread(mr);    //5,将其当作参数传递给Thread的构造函数
          t.start();    //6,开启线程

          for(int i = 0; i < 3000; i++) {
            System.out.println("bb");
          }
        }
      }

      class MyRunnable implements Runnable {    //1,自定义类实现Runnable接口
        @Override
        public void run() {    //2,重写run方法
          for(int i = 0; i < 3000; i++) {    //3,将要执行的代码,写在run方法中
            System.out.println("aaaaaaaaaaaaaaaaaaaaaaaaaaaa");
          }
        }
      }

    匿名内部类:

     

    Java中守护线程的总结

      在Java中有两类线程:User Thread(用户线程)、Daemon Thread(守护线程) 

      用个比较通俗的比如,任何一个守护线程都是整个JVM中所有非守护线程的保姆:

      只要当前JVM实例中尚存在任何一个非守护线程没有结束,守护线程就全部工作;只有当最后一个非守护线程结束时,守护线程随着JVM一同结束工作。

      Daemon的作用是为其他线程的运行提供便利服务,守护线程最典型的应用就是 GC (垃圾回收器),它就是一个很称职的守护者。

      User和Daemon两者几乎没有区别,唯一的不同之处就在于虚拟机的离开:如果 User Thread已经全部退出运行了,只剩下Daemon Thread存在了,虚拟机也就退出了。 因为没有了被守护者,Daemon也就没有工作可做了,也就没有继续运行程序的必要了。

    Java中join()方法的理解

      thread.Join把指定的线程加入到当前线程,可以将两个交替执行的线程合并为顺序执行的线程。

      比如在线程B中调用了线程A的Join()方法,直到线程A执行完毕后,才会继续执行线程B。

      t.join();      //调用join方法,等待线程t执行完毕

      t.join(1000);  //等待 t 线程,等待时间是1000毫秒。

    Java线程中yield()的用法

      Thread.yield()方法的作用:暂停当前正在执行的线程,并执行其他线程。(可能没有效果)

      yield()让当前正在运行的线程回到可运行状态,以允许具有相同优先级的其他线程获得运行的机会。因此,使用yield()的目的是让具有相同优先级的线程之间能够适当的轮换执行。但是,实际中无法保证yield()达到让步的目的,因为,让步的线程可能被线程调度程序

    再次选中。

      结论:大多数情况下,yield()将导致线程从运行状态转到可运行状态,但有可能没有效果。

     锁对象要唯一的, this代表实例这个对象,每个线程都会实例对象,导致不是唯一。 类.class 唯一

  • 相关阅读:
    网站精准查询IP
    JQuery插件模板
    SQLSERVER 数据从一张那个表复制到另一张表
    C# 取form表单的数据
    C# 判断网络文件是否存在
    C# 将文件转换为 Stream
    C# 将 Stream 写入文件
    JDBC教程
    Spring Boot教程
    JavaMail
  • 原文地址:https://www.cnblogs.com/pengranxindong/p/10020313.html
Copyright © 2011-2022 走看看