zoukankan      html  css  js  c++  java
  • 2016/04/18

    多线程:

    package com.wode;

    /**
     *
     * @author Administrator
     *多线程
     */
    public class Test04_18 {
     public static void main(String[] args) {
      //多线程:一个进程用多个线程  线程是最小运行单位,进程可以包含多个线程
      //多个线程可以一起执行
      ThreadClass t1 = new  ThreadClass();
      new Thread(t1).start();//start()  方法让线程执行
      ThreadClass2 t2 = new  ThreadClass2();
      new Thread(t2).start();
      
    //---------------------------------华丽丽的分割线--------------------------------------------------------  
      
      //线程中涉及到一个  精灵线程也叫后台线程或者叫守护线程  三者指的的都是一个意思
      // Java 迚程的结束:当前所有前台线程都结束时, Java 冲程结束
      // 当前台线程结束时,  不管后台线程是否结束,  都要被停掉!
      Thread1 t3 = new Thread1();
       t3.setDaemon(true);//使用setDaemon(true);方法 让t3 成为精灵线程
       t3.start();
      //如果t1执行完毕那么t3不管是否结束 都要停止运行
      
    //---------------------------------华丽丽的分割线-------------------------------------------------------- 
      
       //线程的同步和异步 同步:步调一致的处理   就像人排队上公交车车一样  只有前面的人上去了  后面的人才能上
       //异步: 就像一群一起上食堂一样  大家都可以进去 没有必要等前面的人  进去了以后再进去 
       //同步的关键字:  synchronized
       //synchronized 修饰法 详细参考火车买票
       //最后 Object 中使用wait();方法将让线程进入等待状态 如果不通过notify();将线程唤醒  那么次线程将永远不会醒来
     }

    }

    package com.wode;
    /**
     *
     * @author Administrator
     *创建一个线程
     */
    public class ThreadClass implements Runnable{
     /*在程序开发中只要是多线程肯定永远以实现Runnable接口为主,因为实现Runnable接口相比
       继承Thread类有如下好处:
       ->避免单继承的局限,一个类可以继承多个接口。
       ->适合于资源的共享*/
     
     // 实现了Runnable接口 一定要实现他的run方法
        @Override//重新run  一般执行线程  都把代码写在run方法里面
     public void run() {
      for (int i = 0; i <10; i++) {
       System.out.println("A线程执行了"+i);
    //   try {
    //    //使用sleep 方法使线程  休眠()里是多少毫秒以后再执行
    //    Thread.sleep(1000);
    //   } catch (InterruptedException e) {
    //    // TODO Auto-generated catch block
    //    e.printStackTrace();
    //   }
      }
     }

    }

    package com.wode;
    /**
     *
     * @author Administrator
     *创建第二个线程
     */
    public class ThreadClass2 implements Runnable{

     @Override
     public void run() {
      for (int i = 0; i <50; i++) {
       //Thread.currentThread().setPriority(1);
       //currentThread()  为当前线程的意思    而setPriority 是设置线程的优先级  在资源紧张的时候  会优先执行优先级高的线程
       //线程的优先级 1为最低 10为最高  默认为5
       System.out.println("B线程执行了"+i);
       //Thread.yield();//使用yield 让出CPU 的控制权 
      }
     }

    }

    package com.wode;
    /**
     *
     * @author Administrator
     *建立第三个线程
     */
    public class Thread1 extends Thread{//继承了Thread父类

     @Override
     public void run() {//重写 run方法
      for (int i = 0; i <50; i++) {
       System.out.println("C线程执行了"+i);
      }
     }
     
    }

  • 相关阅读:
    day06 数据类型的内置方法(数字类型和字符串)
    day 05 流程控制(if、while、for)
    day04 交互、格式化输出、运算符
    day03 python运行、变量、注释、内存管理、数据类型
    day02 编程语言
    动手实现hashmap
    顺时针打印矩阵
    反转链表-用二重指针解决
    面试经验--携程测试开发工程师--一面
    linus提到过的单链表删除节点算法
  • 原文地址:https://www.cnblogs.com/chenyangpeng/p/5405832.html
Copyright © 2011-2022 走看看