Java多线程机制

来源:互联网 发布:人工智能计算器ios 编辑:程序博客网 时间:2024/06/03 05:16

Java中的线程

1.主线程(Main线程)
Java语言的一大特性是内置了对多线程的支持。多线程是指一个应用程序中同时存在几个执行。
每个Java程序都有一个缺省的主线程。我们都知道,Java程序的执行总是从main函数开始执行的。当JVM加载代码,发现main之后,就会启动一个线程,这个线程称为“主线程”。那么在main方法执行中再创建线程,就称为程序中的其他线程。如果main方法中没有创建其他的线程,那么main执行完最后一条语句之后,JVM就会结束java应用程序。如果main线程又创建了别的线程,则JVM就会在主线程和其他线程之间切换,保证每个线程都有机会得到CPU资源,JVM需要等到所有的线程都执行结束后,才结束java程序。


2线程的状态和生命周期
java语言使用Thread类或者其子类表示线程。新建的线程在他的一个完整的生命周期通常要经历如下4种状态。
* 1.新建*
当一个Thread类或其子类的对象被声明或者创建时,新生的线程对象处于新建状态。此时它已经有了相应的内存空间和其他资源。
2.运行
线程创建之后就具备了运行的条件。一旦轮到它来享用CPU资源时,此线程就可以脱离创建他的主线程开始自己的生命周期了。
线程创建之后仅仅是占用了内存资源,在JVM管理的线程中还没有这个线程,此线程必须调用start()方法通知JVM,这样JVM就会知道又有一个新的线程排队等候切换了
3.中断
有4中原因导致线程的中断
- JVM将CPU资源切换给其他线程,使本线程让出CPU使用权处于中断状态。
- 线程使用CPU期间,执行了sleep(int millsecond)方法,使当前线程进入休眠状态。线程一旦执行sleep方法,就会立即让出CPU使用权,使当前线程处于中断状态。经过参数millsecond指定的毫秒数之后,该线程重新进入到线程队列中等待CPU资源。
- 线程使用CPU资源期间,执行了wait()方法,使得当前线程进入等待状态。等待状态的线程不会主动进程队列中等待CPU资源,直到使用notify()方法通知它,使得它重新进入到线程队列中排队等到CPU资源。
- 线程使用CPU资源期间,执行某个操作进入阻塞状态。比如读写操作引起阻塞。进入阻塞状态时线程不能进入排队队列,只有当引起阻塞的原因消除时,线程才会重新进入到线程队列中排队等待CPU资源。
4.死亡
处于死亡状态的线程不具有运行的能力。处于死亡状态you两个原因:
- 正常运行的线程完成它的全部工作,即执行完run()方法的全部语句
- 线程被提前强制性终止。
死亡状态的线程释放了分配给线程的内存。


例子:
package com.imooc.concurrent;

public class Test_Thread {
public static void main(String[] args) {
//创建线程
Dog dog = new Dog();
Cat cat = new Cat();
//启动线程
dog.start();
cat.start();
for(int i=0;i<10;i++){
System.out.println(“main” + i);
}
}
}
class Dog extends Thread{
public void run(){
for(int i = 0;i<20;i++){
System.out.println(“dog”+i);
}
}
}
class Cat extends Thread{
public void run(){
for(int i = 0;i<20;i++){
System.out.println(“cat”+i);
}
}
}

注释:关于线程的创建以及常用方法介绍,请看下一篇博客。

0 0
原创粉丝点击