JAVA之线程

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+"线程");
			}
	}
	
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值