草庐IT

C++11多线程—thread

全部标签

Java - 让死线程复活

以下问题在我的一次采访中被问到(几年前)Whatareallthepossibilities/waystobringthedeadthreadbacktoalive(RunnableState)我辩解说没有办法。但他敦促我思考。真的有可用的选项吗?或者他只是在检查我对我的回答的信心? 最佳答案 死亡状态:线程在其run()方法完成时可以被视为死亡。如果任何线程进入此状态,则意味着它永远无法再次运行。 关于Java-让死线程复活,我们在StackOverflow上找到一个类似的问题:

java - Java 中的 Thread.Sleep 替代方案

有人告诉我,使用Thread.Sleep()有时是一个糟糕的解决方案,因为人们想要在同步方法的Action循环中设置一些时间间隔。另一方面,我有两个不同的线程,它们在我的程序运行期间处于Activity状态,还有一个共享对象,当我在该共享对象中使用Object.wait(long)时,它会导致我的GUI卡住一些时间。对于这个问题,什么是更好的解决方案?更新这部分代码包括在GUI中启动的线程之一:classtemperatureUpextendsThread{@Overridepublicvoidrun(){while(true){try{GBC.increaseTemp();updat

java - 了解线程+异步

因此,我有一个程序需要将大量(例如10,000多个)GET请求发送到一个URL,并且我希望它尽可能快。当我第一次创建程序时,我只是将连接置于for循环中,但这确实很慢,因为它必须等待每个连接完成才能继续。我想使其速度更快,所以我尝试使用线程,它使速度有所提高,但我仍然不满意。我猜想正确的方法是使用异步连接并连接到所有URL,以使其真正快速地实现。这是正确的方法吗?另外,我一直在尝试了解线程及其工作方式,但似乎无法理解。我所在的计算机具有IntelCorei7-3610QM四核处理器。根据英特尔网站的规范,该处理器具有8个线程。这是否意味着我可以在Java应用程序中创建8个线程,它们将同

java - java同时运行两个线程

我已经使用timertask来安排我的java程序。现在,当timertask的运行方法正在运行时,我想运行两个同时运行的线程并执行不同的功能。这是我的代码..请帮助我..importjava.util.Calendar;importjava.util.Date;importjava.util.Timer;importjava.util.TimerTask;publicclasstimercheckextendsTimerTask{//myfirstthreadThreadt1=newThread(){publicvoidrun(){for(inti=1;i

java - Volatile 关键字和线程本地内存

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。我对Java中volatile关键字的用法感到困惑。我在互联网上阅读了很多文章,但仍然一无所获。我脑子里有很多问题想问:首先,维基百科和许多博客都说所有volatile变量都存储在所有线程共享的主内存之上的Thread-Local内存中!我有点困惑,它们是指stackmemory吗?我知道每个线程都有自己的堆栈内存,它存储自己的原始文字和对象引用。如果是这

java - 即时编译——什么时候在 Java 中实际发生?

最近我参加了一个关于Java效率的讨论。正如我所听到的,许多反对Java的论点是解释“非常耗时”,正因为如此,即使是简单的Java程序运行起来也比直接编译为机器代码的类似程序慢得多。对此的回答是,Java代码通常直接编译为机器代码,如果只有JVM计算,它会使程序比以标准方式解释时更快。我的问题是:JVM什么时候真正“决定”执行即时编译?使JIT比标准字节码解释更有效的标准是什么?我的意思是,编译本身需要一些时间,据我所知,这一切都应该在程序已经运行时发生? 最佳答案 这根据您的JVM及其设置而有很大差异。维基百科:Forexampl

java - 添加没有 Thread.sleep 的延迟和 while 循环什么都不做

我需要在不使用Thread.sleep()或while循环的情况下添加延迟。即时编辑游戏(Minecraft)时钟以“滴答声”运行,但它们会根据您的FPS波动。publicvoidonTick(){//Calledevery"Tick"if(variable){//Ifmyvariableistrueboolean=true;//Settingmybooleantotrue/***Doingabunchofthings.**///Ineedadelayforaboutonesecondhere.boolean=false;//Settingmybooleantofalse;}}我需要延

java - 线程池执行器 : how does it reuse threads

我读到ThreadPoolExecutor有线程池,这个池注定要降低创建新线程的成本(至少我是这样理解下面的短语):Whenyousendatasktotheexecutor,ittriestouseapooledthreadfortheexecutionofthistask,toavoidcontiniousspawningofthreads.[Java7ConcurrencyCookbook]但是,据我所知,我们无法在Java中重新启动线程。问题:ThreadPoolExecutor如何避免创建新线程? 最佳答案 这很简单-本质

Java 多线程与 Guava EventBus

我正在使用Guava事件总线。我有一个类似服务器的对象,它应该一直运行,监听要发布到bus的事件。所以在junit测试中(MyObject是被测类),我在自己的线程中创建它来模拟它并防止阻塞:@Testpublicvoidtest(){EventBuseventBus=newEventBus();Threadthread=newThread(){@Overridepublicvoidrun(){logger.debug("Creatingnewthread");MyObjectmyObject=newMyObject(eventBus);}};thread.start();...}一切

java - 以负载均衡方式在 4 个线程上分配 10 个无限作业 (Java)

我有10个计算作业,需要(接近)无限时间。例如:计算PI的下一位,solve一个NP-hard约束满足问题等。我有4个线程(所以在一台有8个内核的机器上有一个有4个线程的线程池,所以我还有一些内核可以避免活锁机器和过程)。使用Java8,如何在这4个线程中分配这10个作业?这是个坏主意:ExecutorServicees=Executors.newFixedThreadPool(4);for(Jobj:jobs){es.submit(j);}因为4个工作将开始,但没有一个完成,所以工作5-10永远不会开始。例如,如果我查看10分钟,我预计每个作业运行了大约4分钟。20分钟后,每个作业运