java中的线程(一)——线程的五种状态和线程的创建方式
来源:互联网 发布:从零开始学java 编辑:程序博客网 时间:2024/06/05 16:46
一、在java中,线程通常有五种状态,创建,就绪,运行、阻塞和死亡状态。
第二是就绪状态。当调用了线程对象的start方法之后,该线程就进入了就绪状态,但是此时线程调度程序还没有把该线程设置为当前线程,此时处于就绪状态。在线程运行之后,从等待或者睡眠中回来之后,也会处于就绪状态。
第三是运行状态。线程调度程序将处于就绪状态的线程设置为当前线程,此时线程就进入了运行状态,开始运行run函数当中的代码。
第四是阻塞状态。线程正在运行的时候,被暂停,通常是为了等待某个时间的发生(比如说某项资源就绪)之后再继续运行。sleep,suspend,wait等方法都可以导致线程阻塞。
第五是死亡状态。如果一个线程的run方法执行结束或者调用stop方法后,该线程就会死亡。对于已经死亡的线程,无法再使用start方法令其进入就绪。
二、main方法也是一个线程
垃圾回收机制是一个线程
三、创建线程的方法
1、方式一:定义一个线程类,他继承Thread并且重写其中的方法run(),run()方法称为线程体
class Test{public static void main(String args []) //mian()产生主线程{//生成线程类对象FirstThread ft = new FirstThread();//启动线程1ft.start();//ft.run()不可以直接使用,千万不能这样写,public void run()方法称为线程体//是整个线程的核心,线程所要完成的任务就定义在其中,实际上不同功能的线程之间的区别就在于他们的线程体的不同//线程2for (int i=0;i<100 ;i++ ){System.out.println("main-->" + i);}//线程1与线程2交替进行}}</span>
class FirstThread extends Thread{public void run(){for(int i = 0;i<100;i++){System.out.println("FirstThread-->" + i);}}}</span>2、创建线程的方式二
(1)实现接口Runnable接口,生成Runnable接口实现类的对象
(2)生成一个Thread对象,并将Runnable接口实现类的对象作为参数传递给Thread对象
class RunnableImpl implements Runnable{public void run(){for(int i = 0;i<100;i++){System.out.println("RunnableImpl-->" + i);}}}
class Test{public static void main(String args []){//生成Runnable接口实现类的对象</span>RunnableImpl ri = new RunnableImpl();//生成一个Thread对象,并将Runnable接口实现类的对象作为参数传递给Thread对象</span>Thread th = new Thread(ri);th.start();}}
0 0
- java中的线程(一)——线程的五种状态和线程的创建方式
- Java线程总结(一):创建线程的两种方式Thread和Runnable
- Java线程——两种创建线程的方式
- java 多线程基础(一)——线程创建及五种状态
- Java中的线程(一)-线程的定义与创建
- Java基础:多线程(1)--线程的概述、创建线程的方式、线程的多种状态、线程常用的方法
- Java线程学习(一)线程的创建和执行
- Java线程学习(一)线程的创建和执行
- (一) Java多线程详解之多线程概念和创建线程的两种方式
- iOS 【Multithreading-创建线程的方式/线程状态(了解)】
- java线程(一):线程创建与线程状态
- java中的多线程——线程创建方式、线程互斥和线程间通信
- Java线程之线程的五种状态
- java线程的五种状态
- java 线程的五种状态
- Java中创建线程的两种方式及线程的状态复习
- java线程(1)——三种创建线程的方式
- 线程的创建方式一
- GDB 命令详细解释
- 安卓多线程分段下载文件
- Mac安装Brew和ActiveMQ
- 【特种兵PPT教程】如何给PPT插入、删除背景音乐?
- 常见网络命令的使用
- java中的线程(一)——线程的五种状态和线程的创建方式
- Android 自定义圆形头像(简单的画出来,不需要自定义view)
- error: The following untracked working tree files would be overwritten by merge: linjulu/.DS_Store
- Codevs P1654方程的解
- vim 代码折叠方法
- 在FPGA中嵌入8051核的详细方法与步骤
- 【小米笔试题】朋友圈问题-并查集解法
- 使用dialog实现toast的提示
- 数组与集合中常见的问题:数组中常见的问题:数组与ArrayList之争