「java多线程等待」让线程等待
本篇文章给大家谈谈java多线程等待,以及让线程等待对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、java多线程有哪些状态?
- 2、在java中同时起多个线程,然后怎么让多个线程进入等待状态?
- 3、多线程的java 程序如何编写?
- 4、JAVA多线程中,如何让一个线程去等待N个线程执行完成后,再执行。
java多线程有哪些状态?
初始态:一个线程调用了new方法之后,并在调用start方法之前的所处状态。
就绪:一旦线程调用了start 方法,线程就转到Runnable 状态。
阻塞/ NonRunnable:线程处于阻塞/NonRunnable状态,这是由两种可能性造成的:要么是因挂起而暂停的,要么是由于某些原因而阻塞的,例如包括等待IO请求的完成。
停止/退出:线程转到退出状态,这有两种可能性,要么是run方法执行结束,要么是调用了stop方法。
在java中同时起多个线程,然后怎么让多个线程进入等待状态?
class MyThread extends Thread {
static Object lock = new Object();
public void run() {
// TODO Auto-generated method stub
}
public void toWait() {
synchronized(lock){
try {
lock.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public static void toNotifyAll(){
synchronized(lock){
lock.notifyAll();
}
}
}
//让线程对象在run方法中调用toWait使其等待,调用静态方法toNotifyAll唤醒所有线程
多线程的java 程序如何编写?
Java 给多线程编程提供了内置的支持。 一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。
新建状态:
使用 new 关键字和 Thread 类或其子类建立一个线程对象后,该线程对象就处于新建状态。它保持这个状态直到程序 start() 这个线程。
就绪状态:
当线程对象调用了start()方法之后,该线程就进入就绪状态。就绪状态的线程处于就绪队列中,要等待JVM里线程调度器的调度。
运行状态:
如果就绪状态的线程获取 CPU 资源,就可以执行 run(),此时线程便处于运行状态。处于运行状态的线程最为复杂,它可以变为阻塞状态、就绪状态和死亡状态。
阻塞状态:
如果一个线程执行了sleep(睡眠)、suspend(挂起)等方法,失去所占用资源之后,该线程就从运行状态进入阻塞状态。在睡眠时间已到或获得设备资源后可以重新进入就绪状态。可以分为三种:
等待阻塞:运行状态中的线程执行 wait() 方法,使线程进入到等待阻塞状态。
同步阻塞:线程在获取 synchronized 同步锁失败(因为同步锁被其他线程占用)。
其他阻塞:通过调用线程的 sleep() 或 join() 发出了 I/O 请求时,线程就会进入到阻塞状态。当sleep() 状态超时,join() 等待线程终止或超时,或者 I/O 处理完毕,线程重新转入就绪状态。
死亡状态:
一个运行状态的线程完成任务或者其他终止条件发生时,该线程就切换到终止状态。
JAVA多线程中,如何让一个线程去等待N个线程执行完成后,再执行。
啦!
class MyThread implements Runnable {
@Override
public void run() {
System.out.println("1、进入run()方法休眠");
try {
System.out.println("2、线程休眠20秒");
Thread.sleep(20000);//这里休眠20秒
System.out.println("3、线程正常休眠完毕");
} catch (InterruptedException e) {
System.out.println("4、线程发生异常休眠被中断");
return;//返回方法调用处
}
System.out.println("5、线程正常结束run()方法体");
}
}
public class InterruptDemo {
public static void main(String[] args) {
MyThread mt = new MyThread();
Thread t = new Thread(mt,"线程A");
t.start();//启动线程
//========================================================
try {
Thread.sleep(2000); //保证线程至少执行2秒
} catch (InterruptedException e) {
e.printStackTrace();
}
//========================================================
t.interrupt();//中断线程
}
}
另外,团IDC网上有许多产品团购,便宜有口碑
java多线程等待的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于让线程等待、java多线程等待的信息别忘了在本站进行查找喔。