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);
      }
     }
     
    }

  • 相关阅读:
    物理删除文件 业务层
    页面在本机可以显示,其它机器不可以看到页面
    我对asp.net并行请求数量的理解
    分布式缓存Memcached
    任意两个对象赋值,用Spring.Objects.ObjectWrapper效率比直接反射还慢?
    在Linux(RHEL5.5)里用mono2.8.2和jexus4.1运行.net3.5下的MVC2.0过程记录
    Nhibernate连接oracle数据库,主键ID用序列生成时连接数据库IO次数分析
    Sqlserver别太信任SysComments表中的text字段
    .net4.0线程池取消执行的实际应用
    spring.net、castle windsor、unity实现aop、ioc的方式和简单区别
  • 原文地址:https://www.cnblogs.com/chenyangpeng/p/5405832.html
Copyright © 2011-2022 走看看