线程

1.什么是进程?什么是线程?

 进程是指一种正在进行的程序,它有着自己的地址空间。线程则是进程的一个执行单元。

 2.实现多线程的两种方式。

1.继承Thread类,并重写Run() 方法。

public class Tell extends Thread {

	

	@Override
	public void run() {
		
		for (int i = 0; i < 50; i++) {
			System.out.println(Thread.currentThread().getName()+"..."+i);
		}
		
	}

}
	
	

 Thread.currentThread() 方法是获取当前线程的对象,getName() 方法获取线程的名称。

 2.实现Runnable接口,重写Run() 方法。

public class ThreadTestRunnable implements Runnable{

	int ticket = 30;
	@Override
	public void run() {

		while(ticket>0){
				
		System.out.println(Thread.currentThread().getName()+"......"+ticket--);
			}	
	}

3.两种实现方法的区别

1.继承了Thread类,则不能在继承其他类;

2.实现了Runnable接口,则还可以继承其他类;

3.实现Runnable接口可以共享资源。 

 4.线程中常用的方法

1.isAlive  用于判定线程对象是否处于活动的状态

 

2.join   ---等待该线程终止,强制让某个线程优先执行结束

public class Tell extends Thread {

	

	@Override
	public void run() {
		
		for (int i = 0; i < 50; i++) {
			System.out.println(Thread.currentThread().getName()+"..."+i);
		}
		
	}
	
	public static void main(String[] args) {
		//主线程开始
		System.out.println("---main开始");
		Tell te = new Tell();
		te.start();
		//-----两条线程同时运行
		
		for (int i = 0; i < 30; i++) {
			
			System.out.println(Thread.currentThread().getName()+"*****"+i);
			
			if(i == 10){
				try {
					te.join();//等待te终止  -----1.te线程执行完 再终止   2.te没有执行完就终止了
				} catch (InterruptedException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
		
		//主线程结束
		System.out.println("---main结束");
		
	}
}

3.sleep(毫秒数) ----休眠

public class Tell1 extends Thread{

	
	@Override
	public void run() {
		
		for (int i = 0; i < 10; i++) {
			System.out.println(Thread.currentThread().getName()+"..."+i);
			
			try {
				Thread.currentThread().sleep(2000);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
	
	public static void main(String[] args) {
		
		Tell1 te = new Tell1();
		te.start();
		
		//1秒 = 1000 毫秒
	
		
	}
}

4.setPriority   ----设置线程的优先级

5.setDaemon(boolean),将该线程标记为守护线程或用户线程

6.isDaemon()判定一条线程是否是守护线程

7.yield  ----暂停当前正在执行的线程对象,并执行其他线程。

5.线程的状态

线程有总共分为四大状态:

1.新生态  ----在创建线程对象以后,还没有调用start方法之前

2.可运行态  ----调用了start方法之后,线程的状态可能是正在运行的状态也可能是处于等待运行的状态

 3.阻塞态 ----一种“不可运行”的状态,在得到一个特定的事件之后 会返回到可运行状态

4.死亡态 ----    线程的run方法运行完毕或者在运行中出现未捕获的异常时       

6.解决线程不安全的问题,给资源加上同步锁synchronized

 1.使用synchronized去修饰方法


	public synchronized void f(){
		
	}
	//同步方法是给方法中的资源加上同步锁

2.单独成立代码块 

 

 public void m(){
		synchronized (this) {
			
		}
	}
	同步代码块 针对的是某一个资源

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值