一个关于线程Sleep的小问题

问题描述

创建了一个对象A,A中有一个线程B和一个公共过程CC中包含了一条thread.sleep(100)语句,B线程在执行过程中调用了C,那么这时C中的thread.sleep语句的是否仅对B线程起作用?如果在创建A的主进程中调用A的C过程,那么C中的thread.sleep的作用范围是那个?

解决方案

解决方案二:
微软的MSDN解释为:‘将当前线程阻塞指定的毫秒数’也就是它作用于那个执行thread.sleep命令的线程。
解决方案三:
Sleep是阻塞代码所执行的“当前线程”的。代码有两个概念,一个是指它的静态形式,另一个是加载到内存中之后被线程上下文指针所引用的“影像”。这里显然是指后者。
解决方案四:
实际上就是执行到sleep,代码会阻塞在这里一定时间,再继续执行那么当然是哪个线程去调用它,哪个线程就被阻塞了,跟别的线程没有关系
解决方案五:
这东西很难理解吗?好比你在函数里写了个while(true)死循环那么到底是哪个线程陷入死循环?当然是你用哪个线程去调用这个函数,哪个线程就陷入死循环了
解决方案六:
如果在创建A的主进程中调用A的C过程,那么C中的thread.sleep的作用范围是那个?说白了就是,程序里定义了对象(class),哪个线程都可以去用它,哪个线程用它就Sleep谁。
解决方案七:
说简单一些阻塞是当前调用他的线程,也就是B线程调用C函数时执行到Sleep,B线程就被阻塞,同样A调用也会阻塞A线程
解决方案八:
这就好比玩大富翁的时候,有个格子里写上:休息一轮那么当然是谁走到这个格子里,谁就休息,跟别人没有关系大富翁的棋盘相当于代码而4个玩家是线程同样的代码,4个线程分别执行的时候,可能执行顺序完全都不一样的
解决方案九:
谁调用C,谁就暂停。A调用的时候A会sleep,B调用的时候B会sleep。
解决方案十:
引用8楼SPFarm的回复:

谁调用C,谁就暂停。A调用的时候A会sleep,B调用的时候B会sleep。

最简单明了的答案

时间: 2024-09-20 08:16:22

一个关于线程Sleep的小问题的相关文章

线程中止-请教一个JAVA线程的奇怪问题

问题描述 请教一个JAVA线程的奇怪问题 在学习JAVA线程时候的遇到一个很奇怪的现象.让我们先来看代码 public class TestThread { public static void main(String[] args) { IRun ir = new IRun(); Thread it = new Thread(ir); it.start(); try { Thread.sleep(1000); } catch (InterruptedException ex) { Logger

求一个特别简单的安卓小程序 就是点击一个按钮就与IP127.0.0.1 端口8500建立连接

问题描述 求一个特别简单的安卓小程序 就是点击一个按钮就与IP127.0.0.1 端口8500建立连接 就是安卓的socket程序 能与只连接就行 主要我不懂线程有人说不能写到主线程里 解决方案 把网络耗时的操作放到Handler里面,新建线程操作. http://www.cnblogs.com/devinzhang/archive/2011/12/30/2306980.html 解决方案二: sockt()://建立套接字 connect()://连接 send()://发送 recv():/

关于线程池的小想法

问题描述 首先 吾辈先声明下 吾辈是菜菜, 所以大湿们觉得的那里说错了 尽量喷~~今天早上 吾辈蛋疼的看了下 Excutors 的源代码, 又看了下以前用到线程池的一些方法, 发现了一个小问题吾辈一直是先弄出个线程池, 然后玩命的在线程池里面死命的塞对象ExecutorService pool = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors() + 1);pool.submit(new xRunnab

Android中断并重启一个Thread线程的简单方法

这里简单的总结下(大概思路,没调试,可能会有错!): MyThread.java pulbic class MyThread implemets Thread{ @overide public void run{ while(!Thread.interrputed()){ } } } xxx.java Thread mThread = new MyThread(); public static void startThread(){ mThread = new MyThread(); mThre

android 当在主线程里开启一个新线程 程序就崩溃

问题描述 android 当在主线程里开启一个新线程 程序就崩溃 我要实现的功能是检索SDcard里的所有txt文件我尝试过很多办法 1 不用线程 直接在主线程里检索文件 由于有循环且检索时间会超过5秒 导致黑屏然后提示未响应2 我建立一个线程让线程去检索文件当检索完毕后把检索到的文件传递给主类 主类再把检索到的文件显示在list上 但是当线程一启动程序就崩溃了3 最后我在主类里添加handler 当子线程检索完毕就sendmessage给主类 然后主类把子线程检索到的文件显示在list上但程序

一个跨线程创建窗口的死锁案例

出于某种需要,我们有时可能会实现一个如下描述的场景: 在线程 A 中,创建一个窗口,称为窗口 X. 窗口 X 创建后,创建一个子窗口,称为窗口 Y,并且 Y 所属一个新线程,称为线程 B. 简单来说,父子窗口分别所属不同的线程. 需求描述完毕,现在进入实现的阶段.我以一个简单的例子来实现这个场景,其中 X 为一个自定义窗口,Y 为一个按钮.为了使 按钮从属线程 B,那么我们需要在线程 B 中创建它,并实现其消息队列的分发.另外,父窗口在某个时机(比如 WM_CREATE)创建线程 B.最后,父窗

如何定义一个针对线程的全局变量?(C++)

问题描述 如何定义一个针对线程的全局变量?(C++) 我想定义一个全局变量,但是要求当不同线程访问时不会看到其他线程对它的修改,也就是说,这个变量只是在一个线程中看起来像是全局变量,实际上每一个线程都拥有它的副本并且只能看到和修改这个副本:但这个变量也不是线程的局部变量,因为这个变量不知道调用它的线程在何处启动,若用局部变量的话实现可能比较繁琐,所以我需要一个只在一个线程中看起来像是全局变量的变量,要实现这个目的该如何做呢?望高手指教! 解决方案 语言层面做不到.每个线程的堆栈是独立的,但是共用

赋值-请教一个php自由增减的小算法。

问题描述 请教一个php自由增减的小算法. $i在0~30 的时候,$j是自由增减的,$i==30的时候,$j的值也一定要自由增减到30,不要直接就赋值30,这个算法怎么写呢? 解决方案 问题问的不是很清楚,$j自由增减是如何自由增减呢? 算法大体是这样: 1.先判断$i的值,是否在0~30里面 2.如果$i在0~30里面,$j自由增加,如果$i ==30,判断$j是否为30,是,结束代码,不是,$j++或$j-- 解决方案二: 我是新手,什么是自由增减呢,是随机增加一个数还是什么?如果是这样可

android中如何实现弹出一个阻塞线程的对话框?谢谢,大神们。

问题描述 android中如何实现弹出一个阻塞线程的对话框?谢谢,大神们. RT. 先说一下我的结构,我做了一个等待的Activity,所有可能耗时的操作都会跳到这个Activity.这个Activity中有一个Service层基类的引用(多态).会通过这个引用调用具体Service中的某个耗时的方法.当这个方法返回true的时候,这个页面就会关掉(finish())自己. 现在我需要在这个方法中弹出一个类似于对话框的东西,我希望这个对话框可以阻塞当前进程,等我操作完毕之后才继续执行后面的代码.