Java线程生命周期及其使用,sleep与interrupt的使用,wait与notify

工作内容:

1.回顾单例模式和简单工厂模型

2.学习Java多线程机制

学习分享:

线程:进程的一条执行路径

一、线程的生命周期:新建→(start)就绪→(获取资源执行run语句)运行状态→堵塞状态(sleep)(run语句执行完)终止

二、线程实现方式:

1.继承Thread.      

2.实现Runnable接口【可以实现多线程的资源共享】

三、Thread.sleep(毫秒数)Thread. Interrupt()的使用:

1.sleep方法需在线程start之后执行,该方法是使当前线程进入阻塞状态,持续时间是‘毫秒数’。

2.在使用sleep方法后,使用interrup方法可以使sleep执行catch部分语句(可以在catch语句中使用return语句来终止该线程)

3.Thread.yield()方法会使当前线程进入就绪状态,重新等待资源

4.object.wait()方法(属于Object)可以使object处于等待状态,这个object将一直不能变动【变动也是无效的变动】,直到object.notify/notifyAll来唤醒这个object之后才可队这个object做操作

5.线程优先级的设置:

a) 实现Runnable接口——在线程start()之前设置

b) 继承自Thread,可以在构造方法中使用this.setPriority(int权值)来设置

//测试实现Runnable的使用【实现资源共享】
public class RunnableDemo implements Runnable {
	private int tickets = 50;

	@Override
	public void run() {
		while (tickets > 0) {
			System.out.println(Thread.currentThread().getName() + "正在卖票,还剩" + (tickets--) + "张票");
		}
	}
}
//测试用例
public class Test {
	public static void main(String[] args) {
		RunnableDemo sale = new RunnableDemo();
		Thread window1 = new Thread(sale, "一号");
		Thread window2 = new Thread(sale, "二号");
		Thread window3 = new Thread(sale, "三号");
		window1.start();
		window2.start();
		window3.start();
	}
}

执行结果:共享票数

 

//测试sleep和interrup的使用
public class RunnableDemo implements Runnable {
	private int tickets = 50;
	@Override
	public void run() {
		while (tickets > 0) {
			System.out.println(Thread.currentThread().getName() + "正在卖票,还剩" + (tickets--) + "张票");
			try {
				Thread.sleep(1000);
			} catch (InterruptedException e) {
				System.out.println("抛出异常");
				return;// 如果这里没有使用return,则程序继续执行
			}
		}
	}
}

public class Test {
	public static void main(String[] args) {
		// MultiThreadingTest myMultiThreadingTest = new MultiThreadingTest();
		// myMultiThreadingTest.start();
		// for (int i = 0; i < 1000; i++) {
		// System.out.println(Thread.currentThread().getName());
		// }
		RunnableDemo sale = new RunnableDemo();
		Thread window1 = new Thread(sale, "一号");
		// Thread window2 = new Thread(sale,"二号");
		// Thread window3 = new Thread(sale,"三号");
		window1.start();
		// window2.start();
		// window3.start();
		try {
			Thread.sleep(3000);
		} catch (InterruptedException e) {
			System.out.println("主线程暂停异常");
		}
		window1.interrupt();
		System.out.println("执行结束");
	}
}


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值