草庐IT

Tread多线程

全部标签

Java 并发 - 为什么同步 setter(而不是 getter)不能使类线程安全?

这个问题在这里已经有了答案:关闭12年前。PossibleDuplicate:ThreadsafetyinJavaclass我正在阅读Java并发实践,我遇到了一个令我困惑的例子。作者声明这个类不是线程安全的publicclassMutableInteger{privateintnumber;publicintgetInt(){returnnumber;}publicvoidsetInt(intval){number=val;}}而且他们还声明仅同步一种方法(例如setter)是不行的;你必须同步两者。我的问题是:为什么?同步setter不行吗?

Java - 从缓冲读取器(从套接字)读取正在暂停线程

我有一个线程从缓冲读取器(从套接字创建如下)读取字符:inputStream=newBufferedReader(newInputStreamReader(clientSock.getInputStream()));这段代码只能运行一次。例如,如果客户端连接并发送:“Thisisatest”和“Thisisanothertest”,主机输出为:Readingfromstream:Charsreadfromstream:16ThisisatestReadingfromstream:请注意,该程序不会收到“这是另一项测试”,因为它卡在读取流上。有没有办法在不减小缓冲区大小的情况下处理这个问

Java 线程池执行器监控

JavaSE6文档中的ThreadPoolExecutor类具有以下method:publicintgetActiveCount()Returnstheapproximatenumberofthreadsthatareactivelyexecutingtasks.这里的approximate和activelyexecution是什么意思?是否有任何保证,如果在调用getActiveCount()之前、期间和之后N个线程已从池中分配给任务执行,并且这N个线程都不可用于进一步的任务分配,getActiveCount()返回的整数正好是N?如果getActiveCount()不提供这种保证,

Linux下的多线程编程:原理、工具及应用(1)

                        🎬慕斯主页:修仙—别有洞天                                            ♈️今日夜电波:FlowerofLife—陽花                                0:34━━━━━━️💟────────4:46                                    🔄 ◀️ ⏸ ▶️  ☰                                        💗关注👍点赞🙌收藏您的每一次鼓励都是对我莫大的支持😍目录模拟语言封装Linux下多线程接口线程互斥前置知

java - 中断运行nashorn脚本的java线程

在下面的代码中,我在与主线程不同的线程中运行javascript。该脚本是一个无限循环,因此需要以某种方式终止它。怎么办?在脚本开始运行后调用.cancel()无效。但是,如果我在线程初始化之后立即调用.cancel(),它将终止它(注释掉的行)。packagetestscriptterminate;importjavax.script.ScriptEngine;importjavax.script.ScriptEngineManager;importjavax.script.ScriptException;importjava.util.concurrent.ExecutorServ

java - 带有 jmx 的动态代理会导致线程泄漏?

我在使用JMX接口(interface)设置动态代理的Java中遇到问题,将其传递给另一个组件,该组件然后调用代理对象。当我这样做时,应用程序会为每次调用泄漏两个线程,这些线程似乎永远不会超时并不断增加,直到应用程序内存不足。线程成对出现,查看底部的堆栈跟踪。我曾尝试使用一些稍微晦涩的系统属性来关闭JMX中的所有超时,但这并没有什么不同。关键操作似乎是动态代理调用。通过代理调用的对象实现了Serializable,所以这应该不是问题。当我用MBean路径和对象接口(interface)的字符串手动创建Bean并从中调用方法时,问题就消失了。当涉及到动态代理时,我主要在这里寻找经典陷阱,

java - 通过扩展 Thread 类或实现 Runnable 创建线程哪个更可取?

这个问题在这里已经有了答案:"implementsRunnable"vs"extendsThread"inJava(43个回答)关闭9年前。我想知道通过扩展线程类或通过实现Runnable接口(interface)创建线程哪个更可取。为什么?谢谢..

java - 在特定时间运行java线程

我有一个Web应用程序,它每小时与中央数据库同步四次。该过程通常需要2分钟。我想在X:55、X:10、X:25和X:40作为线程运行此进程,以便用户知道在X:00、X:15、X:30和X:45他们有一个干净的数据库副本。这只是关于管理期望。我已经在java.util.concurrent中检查了执行程序,但是调度是使用scheduleAtFixedRate完成的,我认为这不能保证实际运行的时间小时。我可以使用第一个延迟来启动Runnable,以便第一个接近启动时间和每15分钟安排一次,但看起来这可能会在时间上有所不同。是否有更简单的方法来安排线程在每刻钟前5分钟运行?

Java 线程池的使用

我正在尝试编写一个多线程网络爬虫。我的主入口类有如下代码:ExecutorServiceexec=Executors.newFixedThreadPool(numberOfCrawlers);while(true){URLurl=frontier.get();if(url==null)return;exec.execute(newURLCrawler(this,url));}URLCrawler获取指定的URL,解析HTML从中提取链接,并将看不见的链接调度回frontier。边界是未抓取URL的队列。问题是如何编写get()方法。如果队列为空,则应等到任何URLCrawlers完成后

单线程环境中单个事件源的 Java Swing 多个事件监听器

我目前正在学习Swing,一般来说我是GUI开发的新手。在我的测试应用程序中,我有一个事件源的多个事件监听器,我想知道这些事件监听器中的哪一个将首先被执行。此外,我很想知道Swing事件处理在单线程环境中是如何工作的,尤其是当您对单个事件源有多个监听器时。最后,我想了解一些在Swing中必须使用多线程的常见情况。谢谢! 最佳答案 我会尽力回答您的所有3个问题。首先,未指定ActionListener的触发顺序。永远不要假设他们将开火的特定命令。如果您需要按特定顺序执行操作,请将它们放在相同的ActionListener中。在对Swi