首页 > 代码库 > 从你的全世界路过-论演员的自我修养

从你的全世界路过-论演员的自我修养

 线程

1.概念  : 线程是一个程序内部的顺序控制流

2.线程与进程的区别 

  (1)每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销

  (2) 线程可以看做轻量级的进程,同一线程共享代码和数据空间。每个线程有独立的运行栈和程序计数器PC,线程切换的开销小

  (3) 多进程 在操作系统中同时运行多个任务(程序)

  (4) 多线程:在同一应用和程序中有多个顺序流同时进行

3 注意点

  (1)java 的线程是通过java.lang.Threadl类来实现的

  (2)VM启动时会有一个由主方法 (public void main (){}) 所定义的线程

  (3)可以通过创建Thread的实例来创建线程

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

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

4 创建线程的方式

  (1)第一种

         (I) 定义线程类实现Runnable接口

         (I) Thread myThread=new Thread(target) //target 为Runnable接口类型

         (I) Runnable中只有一个方法;

                    [I] public void run(){}  // 用以定义线程运行体

         (I)使用Runnable接口可以为多个线程提供共享的数据

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

                   [I] public static Thread currentThread() 获取当前线程的引用

 (2)第二种     

        (I) 可以定义一个Thread的子类并重写run()方法 如:

                      class MyThread extends Thread{

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

                     }

       (I) 然后生成该类的对象:

                      MyThread mythread =new MyThread(..........)

public class Actor extends Thread {

	public void run(){
		System.out.println(getName()+"是一个演员");
		int count =0;
	    boolean	keepRunning=true;
		while(keepRunning){
			System.out.println(getName()+"登台演出"+(++count));	
			
			if(count==100){
				keepRunning=false;
			}
			
			if(count%10==0){
				try {
					Thread.sleep(1000);    //线程休眠
				} catch (InterruptedException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
		
		System.out.println(getName()+"的演出结束了");
	}
	
	

 

  

public class Actress implements Runnable {

	public void run() {
		System.out.println(Thread.currentThread().getName()+"是一个演员!");
		int count =0;
	    boolean	keepRunning=true;
		while(keepRunning){
			System.out.println(Thread.currentThread().getName()+"登台演出"+(++count));	
			
			if(count==100){
				keepRunning=false;
			}
			
			if(count%10==0){
				try {
					Thread.sleep(1000);    //线程休眠
				} catch (InterruptedException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
		
		System.out.println(Thread.currentThread().getName()+"的演出结束了");
	}
	

}

  

public static void main(String [] args){
		Thread actor=new Actor();
		actor.setName("Mr.Thread");
		
		actor.start();
		
		
		Thread actressThread=new Thread (new Actress(),"Mrs.Runnable");
		actressThread.start();
	}

  

 

从你的全世界路过-论演员的自我修养