多线程概念

多线程

  ——Java开发 @author Bliss

线程模型**

什么是线程?

 -安装在磁盘上的一段指令的集合。即我们电脑或手机上的那些快捷方式。

什么是进程?

 -是运行中的程序。

什么是线程? 

 -被称为轻量级进程,是程序执行流中的最小单位。是程序中的一个单一的顺序控制流程。

什么是多线程?

 -就是在单个程序中可以同时运行多个不同的线程执行不同的任务。

多线程的特点

 -同一个进程中的多个线程之间可以并发执行。

多线程的目的

 -最大限度地利用CPU资源

两种创建线程的方法  [后有详细代码]

 -通过继承Thread类 

 -通过实现Runnable接口

 都是通过thread的start方法启动线程


线程的生命周期

 -创建(new Thread

   - Thread thread = new Thread();

   使用new创建一个线程后,该线程仅仅是一个空对象,但系统没有为其分配资源,处于创建状态。

 -就绪(Runnable)

   - 使用start()方法启动一个线程后,系统为该线程分配了除了CPU外的所需资源,处于就绪状态。

 -阻塞(Blocked)

   - 一个正在运行的程序因某种原因不能继续运行,就会处于阻塞状态。

   原因可能是:

     -使用了sleep()方法,该线程对象会被置入一个阻塞集,等待超时自动苏醒

     -当多个线程试图进入同步区域(synchronized)时,没能进入同步区域的线程就会被置于一个锁定集,直到获得进入同步区域的锁,进入就绪状态。

     -使用了wait()方法,线程会被置入一个等待集,直到执行了该对象的notify()方法。

 -运行(Running)

   - 处于就绪状态的线程获得CPU资源,转为运行状态。

 -死亡(Dead)

   - 线程在run()方法执行结束后进入死亡状态。

   终止线程的3种方法:

     1.线程正常退出

2.使用stop()方法强行终止线程[不建议使用]

3.使用interrupt()方法中断线程[不建议使用]


一个售票的小案例讲解 Thread 和 Runnable 的使用

public class Demo {
/***
* 售票

* Runnable 的演示

* @param args
* @author Bliss
*/
public static void main(String[] args) {
//Runnable
TicketRunnable ticketRunnable = new TicketRunnable();
Thread t1 = new Thread(ticketRunnable,"窗口1");
Thread t2 = new Thread(ticketRunnable,"窗口2");
t1.start();
t2.start();
}
}
class TicketRunnable implements Runnable {
/***
* Runnable 
* 优点:

* 1.避免单继承的局限性
* 2.适合资源的共享
*/
private int ticket = 5;
@Override
public void run() {
while (true) {
System.out.println(Thread.currentThread().getName() + ":" + (ticket--));
if (ticket < 0) {
break;
}
}
}
}


public class Demo {
/***
* 售票

* Thread 的演示

* @param args
* @author Bliss
*/
public static void main(String[] args) {
//Thread
TicketThread t1 = new TicketThread("窗口1");
TicketThread t2 = new TicketThread("窗口2");
t1.start();
t2.start();
}
}

class TicketThread extends Thread{
private int ticket = 5;
public TicketThread(String name){
super(name);
}
@Override
public void run() {
while (true) {
System.out.println(this.getName() + ":" + (ticket--));
if (ticket < 0) {
break;
}
}
}
}




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值