Java_多线程_简介

本博客为子墨原创,转载请注明出处!
http://blog.csdn.net/zimo2013/article/details/8720509

1.进程与线程概述

        进程:正在进行的程序。
        线程:进程内部的一条执行路径或者一个控制单元。

2.实现多线程方法

        (1).直接继承Thread,覆写run(),start()启动

	public static void main(String[] args) {
		new Thread("s"){
			public void run() {
				while(true){
					try {
						Thread.sleep(1000);
					} catch (InterruptedException e) {
						e.printStackTrace();
					}
					System.out.println("Thread:"+Thread.currentThread().getName());
				}
			}
		}.start();
	}

 

        (2).实现Runnable接口,覆写run(),并将该对象传递给Thread,start()启动

	public static void main(String[] args) {

		new Thread(new Runnable() {
			public void run() {
				while(true){
					try {
						Thread.sleep(1000);
					} catch (InterruptedException e) {
						e.printStackTrace();
					}
					System.out.println("Runnable:"+Thread.currentThread().getName());
				}
			}
		}).start();
	}


       两种实现的区别:

	new Thread(new Runnable() {
		 public void run() {
		  //code1 覆写Runnable接口的run方法
		 }
		}){
		 public void run() {
		  //code2  覆写Thread的run方法
		 }
		}.start();

       首先应该查看Thread的run()实现过程

	public void run() {
		//private Runnable target;
		 if (target != null) {
		     target.run();
		 }
	}

       即如果覆写了Thread的run方法,则直接执行该run()
       如果没有覆写run(),则线程的start()方法会执行父类的run方法,即上面的一段代码,会找到实现Runnable接口的run()

       Runnable将要执行的代码封装在一个对象中,更符合面向对象的设计思想
3.线程的几种状态
       (1).新建
              new一个Thread对象,一个线程对象被创建,但没有开启,完成了内存空间的开辟和数据的初始化。         
       (2).就绪
              新建的对象调用start()方法,就开启了线程,线程就到了就绪状态,具有执行资格,可能没有执行权。
       (3).运行
              当线程对象获取到了CPU的资源
       (4).冻结
              运行过程中的线程由于某些原因(比如wait,sleep),释放了执行资格和执行权。
       (5).死亡
              当线程对象调用的run方法结束,或者直接调用stop方法,就让线程对象死亡,在内存中变成了垃圾。
4.线程同步要求
       (1).有两个以上线程
       (2).多个线程使用同一个锁
       (3).必须保证同步中只有一个线程在运行

1.5并发性-线程池ThreadPool更多说明>>

 

你可能感兴趣的:(thread,多线程,Runnable,线程,run)