线程 sleep wait join

当前线程静态方法:

1.sleep:阻塞当前线程一段时间,主动行为,不会分配到CPU资源,不会释放锁。

2.yield:阻塞当前线程一段时间,主动行为,不会分配到CPU资源,不会释放锁。(跟sleep不同的是让出cpu资源,其他高优先级或者低优先级的线程得到执行)

当前线程实例方法:

1.join:阻塞调用线程,让调用线程等待在那边。线程实例阻塞调用线程,直到线程执行结束。

2.wait:阻塞当前线程一段时间,释放锁资源,并且等待信号通知。(在.NET中实现诸如  lock(){monitor.wait()} ; autoResetEvent.waitone() )

时间: 2024-11-03 03:25:23

线程 sleep wait join的相关文章

非分离线程未使用join函数例子:

//非分离线程未使用join函数例子: #include<stdlib.h> #include<pthread.h> #include<stdio.h> #include<sched.h> #include<errno.h> void*consumer(void*p) { static a=0 ; a++; printf("<<<<<<<<<<<<<<&

等待线程结束(join)

很多情况下,线程之间的协作和人与人之间的协作非常相似.一种非常常见的合作方式就是分工合作.以我们非常熟悉的软件开发为例,在一个项目进行时,总是应该有几位号称是"需求分析师"的同事,先对系统的需求和功能点进行整理和总结,然后,以书面形式给出一份需求说明或者类似的参考文档,然后,软件设计师,研发工程师才会一拥而上,进行软件开发.如果缺少需求分析师的工作输出,那么软件研发的难度可能会比较大.因此,作为一名软件研发人员,总是喜欢等待需求分析师完成他应该完成的任务后,才愿意投身工作.简单地说,就

Java线程中的join使用实例

JDK中解释为 Waits for this thread to die. 等待本线程结束后,下一个线程才可以运行. 实例要求: 现在有T1.T2.T3三个线程,你怎样保证T2在T1执行完后执行,T3在T2执行完后执行 实现代码: package com.st.lesson02; public class Test01 { //1.现在有T1.T2.T3三个线程,你怎样保证T2在T1执行完后执行,T3在T2执行完后执行 public static void main(String[] args)

对线程中断,join,yield的理解

一个线程在未正常结束之前, 被强制终止是很危险的事情. 因为它可能带来完全预料不到的严重后果. 所以你看到Thread.suspend, Thread.stop等方法都被Deprecated了 那么不能直接把一个线程搞挂掉, 但有时候又有必要让一个线程死掉, 或者让它结束某种等待的状态 该怎么办呢? 优雅的方法就是, 给那个线程一个中断信号, 让它自己决定该怎么办. 比如说, 在某个子线程中为了等待一些特定条件的到来, 你调用了Thread.sleep(10000), 预期线程睡10秒之后自己醒

模拟做饭系统(java+线程中的join方法)

(一)项目框架分析 妈妈要去做饭,发现没有酱油,让儿子去买酱油,然后回来做饭. 根据面向对象的思想,有两个对象,妈妈和儿子 主要有两个方法: (一)没有线程控制(即儿子没有买酱油回来妈妈就做好饭了)+(没有调用jion方法) (二)有线程控制(妈妈进程和儿子进程又先后影响)+(调用jion方法) 项目的结构图: (二)没有进程控制mintak Son.java主要是模拟儿子的行动,儿子买酱油的行动(与有进程控制的源程序相同) 代码如下: public class Son implements R

Java多线程--让主线程等待所有子线程执行完毕 join

首先从公司一道笔试题开始 1 package test; 2 3 public class Test implements Runnable { 4 5 public int i = 0; 6 7 @Override 8 public void run() { 9 try { 10 Thread.sleep(1000); 11 } catch (InterruptedException e) { 12 // TODO Auto-generated catch block 13 e.printSt

线程中sleep(),join(),yield()的使用

线程Thread中有3个方法 sleep(int mills)的作用是使线程睡眠mills个毫秒: join()的作用是合并线程,使两个线程合并到一条线上运行: yield()的作用是暂时让出CPU给其他线程运行. 优先级的设置: Thread.MAX_PRIORITY; Thread.MIN_PRIORITY; Thread.NORM_PRIORITY; 同样的线程对象可以起两个线程:

java基础:线程方法之join

一:看程序 二:分析 join方法的含义是:合并线程,本例中就是将r线程,拽回到main主线程,那么就会先执行r线程,再执行main线程的输出. 三:输出结果: Runner1----0 Runner1----1 Runner1----2 Runner1----3 Runner1----4 Runner1----5 Runner1----6 Runner1----7 Runner1----8 Runner1----9 main-------0 main-------1 main-------2

java线程Thread的join方法。

1,方法的作用: 父线程等待子线程的执行. 如果是join或者join(0),即等待时长是0,父线程就会一直等到子线程执行结束, 如果是join(time),即等待时长是time数值,那父线程等待时长视情况而定: 第一种:子线程执行时长不需要time时长,那么父线程就可能不会等待到time时长,为什么是可能呢?是不是要考虑其他线程(不包括父线程,和子线程以外的线程),他也可能让父线程等待的(没有获取到cpu时间片等原因), 第二种:子线程执行时长超过time时长,那么父线程的等待时长,至少是ti

实现ThreadFactory接口生成自定义的线程给Fork/Join框架

Fork/Join框架是Java7中最有趣的特征之一.它是Executor和ExecutorService接口的一个实现,允许你执行Callable和Runnable任务而不用管理这些执行线程.这个执行者面向执行能被拆分成更小部分的任务.主要组件如下: 一个特殊任务,实现ForkJoinTask类 两种操作,将任务划分成子任务的fork操作和等待这些子任务结束的join操作 一个算法,优化池中线程的使用的work-stealing算法.当一个任务正在等待它的子任务(结束)时,它的执行线程将执行其