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

原文地址:https://www.cnblogs.com/chenyangpeng/p/5405832.html