首页 > 其他 > 详细

JAVA之线程

时间:2014-03-04 15:06:38      阅读:387      评论:0      收藏:0      [点我收藏+]
1.java的线程是通过java.lang.Thread类来实现的,进程是一个静态的概念
  多进程:在操作系统中能同时运行多个任务
  多线程:在同一个应用程序中有多个顺序流同时执行
2.每个线程通过Thread的实例来创建新的线程
3.每个线程通过调用Thread类的start()方法来启动一个线程
4.每个线程都是通过某个特定的Thread对象所应用的的方法run()来完成,方法run()为线程体,当一个线程调用它的start()方法后,虚拟机就会去调用这个线程中的run()方法。
  如myThread是一个线程对象,调用myThread.start();后,当CPU轮到这个线程使用时,虚拟机就会去调用这个线程的run()方法。
5.可以通过两种方式创建新的线程,一种是定义线程实现Runnable接口,如:
  Thread myThread = new Thread (target)//target为Runnable接口类型
  另一种可以定义一个Thread的子类重写其run()方法,如
  class MyThread extends Thread{
public void run(){......}
  }
6.线程中的sleep方法,可以调用Thread的静态方法,使当前的线程休眠,可以由类直接调用
  线程中的join方法,用来合并某个线程
  线程中的yied方法,让出CPU,把执行的机会给其他线程
  notify叫醒线程
7.当某个对象被synchronized修饰时,表明该对象在任一时刻只能由一个线程访问
  synchronized(this){}//锁定当前对象
  public synchronized void aa(String name){}//锁定当前方法中的对象
8.wait和sleep的区别:
  wait时别的线程可以访问锁定该对象,调用wait方法的时候必须锁定该对象
  sleep时别的对象也不能访问锁定的对象

9.synchronized方法的程序应用举例:

public class Test implements Runnable{//实现Runnable接口
	Timer timer = new Timer();//创建一个timer对象
	public static void main(String[] args) {
		Test aa = new Test();
		Thread a1 = new Thread(aa);//创建线程
		Thread a2 = new Thread(aa);
		a1.setName("a1");//为线程命名
		a2.setName("a2");
		a1.start();//启动线程
		a2.start();
		
	}
	public void run(){//当一个线程调用它的start()方法后,虚拟机就会去调用这个线程中的run()方法
		timer.add(Thread.currentThread().getName());//获得当前线程的名字
	}

}

class Timer{
	private static int num = 0;//用于计数
	public synchronized void add(String name){//锁定当前方法中的对象,在执行中不至于被打断
		num++;
		try{
			Thread.sleep(1);
			}catch(InterruptedException e){
				System.out.println(name+"是第"+num+"线程");
			}
	}
	
}


JAVA之线程,布布扣,bubuko.com

JAVA之线程

原文:http://blog.csdn.net/u012505695/article/details/20390855

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!