Java中的创建多线程的方法
来源:互联网 发布:红色报刊档案数据库 编辑:程序博客网 时间:2024/06/11 01:04
一、Java中多线程的生命周期
Java中的一个线程有5个状态:
1.新建状态(new):当线程被创建了,该线程就进入新建状态,如 Thread t= new Thread();
2.就绪状态(Runnable):当线程调用了start()方法,线程就进入就绪状态,如t.start( ),此时该线程不是马上执行,而是等待CPU分配资源调度;
3.运行状态(Running):当CPU开始调度处于就绪状态的线程时,此时线程才得以真正执行,即进入到运行状态。注:就 绪状态是进入到运行状态的唯一入口,也就是说,线程要想进入运行状态执行,首先必须处于就绪状态中;
4.阻塞状态(Blocked):处于运行中的线程,可能因为某些原因而放弃对CPU的使用,进入阻塞状态,直到该线程再次进入就绪状态(Runnable),才有机会被执行。阻塞状态有三种:
(1)等待阻塞:执行wait( )方法,线程进入等待阻塞状态,等待notify( )进入同步阻塞状态,直到获得同步锁,重新进入就绪状态。
(2)同步阻塞:线程在获取synchronized同步锁失败(因为锁被其它线程所占用),它会进入同步阻塞状态,直到获得同步锁,重新进入就绪状态;
(3)其他阻塞:线程还有可能通过sleep( ) 或 join() 或 发出I/O请求时,线程会进入到阻塞状态。当sleep()状态超时、join()等待线程终止或者超时、或者I/O处理完毕时,线 程重新转入就绪状态。
5.死亡状态(Dead):线程执行完毕,或因异常退出run( )方法,程序死亡。
二、Java中创建多线程主要有两种方法,一种是继承Thread类,一种是继承Runnable接口。下面创建一个猫类,让它的实体作为一个线程,在控制台上输出“Hello World”十次,输完停止该线程。
1.继承Thread类。
在main方法里面创建继承了Thread的类的实体c1,启动实体的线程,就是调用Thread类的start()函数,start将启用线程,并调用run()函数。
public class Demo1{
public static void main(String[]args) {
Cat c1=new Cat();
c1.start();
}
}
创建一个猫类,继承Thread类,复写run()方法,用while(true)循环执行线程。
class Cat extends Thread {
int times=0;
public void run() {
while(ture) {
try {
Thread.sleep(1000);
} catch (InteruptedException e) {
e.printStackTrace();
}
System.out.println("Hello world!");
times++;
if(times==10)
break;
}
}
}
2.用Runnable接口实现多线程。创建新的应用了Runnable接口的实体c2,在创建一个线程t,将该实体传入该线程,再将该线程启动。
public class Demo2 {
public static void main(String[]args) {
Cat c2=new Cat();
Thread t=new Thread(c2);
t.start();
}
}
猫类应用了Runnable的接口,复写run()方法,写法和继承Thread类一样。
public class Cat implements Runnable {
int times=0;
public run() {
whlile(true) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace;
}
System.out.println("Hello World!");
times++;
if(times==10)
break;
}
}
}
- Java中的创建多线程的方法
- java多线程创建方法
- 创建Java多线程的多种方法
- java创建多线程方法之间的区别
- [java多线程]创建线程的两个方法
- java创建多线程的两种方法
- Java创建多线程的几种方法
- Java创建多线程的三种方法
- 创建Java多线程的多种方法ouchuquan
- java多线程的创建及常用方法
- java -- 多线程的两种创建方法
- java创建多线程的三种方法
- Java创建多线程的三种方法
- Java多线程的创建(方法一)
- Java多线程的创建(方法二)
- Java中多线程的创建方法
- 多线程的创建方法
- java多线程中的interrupt方法的使用
- JAVA日期格式化工具【L】
- Red and Black
- NYOJ-105-九的余数(数论)
- 深度学习21天实战实战caffe学习笔记<3>
- JSP(一)--部署web应用/JSP运行原理/在 myeclipse环境中集成tomcat/脚本元素/指令元素/动作元素/动态包含/转发/传递参数
- Java中的创建多线程的方法
- Linux---lseek函数
- Vue.js UI框架比较
- SQL Server 2008数据库创建,备份,还原
- python 文件中定义同名的class
- [CQOI2007]涂色paint
- 用一条 SQL 语句查询出每门课都大于 80 分的学生姓名
- 常用的正则表达式总结
- ionic相关问题记录