Tag: multithreading

java守护程序线程和非守护程序线程

我正在读java过去的考试卷,我遇到了令我困惑的以下问题。 以下哪项是真的? (选择所有适用的选项。) A.当应用程序开始运行时,有一个守护程序线程,其作用是执行main()。 B.当应用程序开始运行时,有一个非守护程序线程,其作用是执行main()。 C.守护程序线程创建的线程最初也是一个守护程序线程。 D.由非守护程序线程创建的线程最初也是非守护程序线程。 关键答案是B,C,D,谁能告诉我为什么B,C是正确的? 非常感谢。

如何在弹簧集成中并行和同步处理?

是否有可能在Spring集成中保持通道同步(在发送消息后获得确认)但同时处理更多消息(并行处理)而不用线程创建自己的代码(即ExecutorService执行并提交worker)并等待它们? 我想通过FTP上传文件,但同时上传更多文件而不在代码中创建自己的线程。 我需要知道何时上传所有文件(这就是为什么我希望它是同步的)。 是否可以通过Spring集成配置,如果是,如何?

这是对象的安全发布吗?

我有一个课程项目 class Item { public int count; public Item(int count) { this.count = count; } } 然后,我将在其他类的字段中引用Item class Holder { public Item item; public Holder() { item = new Item(50); } } 这个新的Item对象可以安全发布吗? 如果没有,为什么? 根据Java Concurrency in Practice,新的Item是在没有完全构造的情况下发布的,但在我看来,新的Item是完全构造的:它的引用不会被转义,并且它的引用和它的状态同时发布,所以消费者线程不会看到过时的价值。 或者是可见性问题。 我不确切知道原因。

Java Server – 多个端口?

我即将编程服务器,但我想知道我的想法是否可行。 我的程序将输出到多个端口上的多个客户端 – 每个端口可以被多个客户端访问。 通常我会使用线程套接字服务器,但在这种情况下我需要它为多个端口工作。 我想到的用法是在下面的模糊伪代码中: 启动服务器 侦听多个端口上的传入连接 识别要连接的端口 如果是端口1,则启动一个侦听客户端的线程并输出消息类型x 如果是端口2,则启动一个侦听客户端的线程并输出消息类型y 希望这有点意义,你可以看到我正在尝试做什么。 简单地说:听取选定的端口,根据连接的端口创建一个线程套接字连接。 这是可行的,还是我要结束multithreading线程套接字服务器? 编辑:更改措辞以更好地反映问题。

Java在两个线程之间共享一个变量

我有两个主题。 一个调用修改变量的类的update方法。 另一个调用读取变量的类的update方法。 只有一个线程写入,一个(或多个)线程读取该变量。 由于我不熟悉multithreading,因此在并发方面我需要做什么? public class A { public int variable; // Does this need to be volatile? // Not only int, could also be boolean or float. public void update() { // Called by one thread constantly ++variable; // Or some other algorithm variable = complexAlgorithm(); } } public class B { public […]

线程任务完成后,JavaFX显示对话

我需要显示对话窗口 Stage dialog = new Stage(); dialog.initStyle(StageStyle.UTILITY); Scene scene = new Scene(new Group(new Text(25, 25, “All is done!”))); dialog.setScene(scene); dialog.showAndWait(); 在我的线程完成任务之后 Thread t = new Thread(new Runnable() { @Override public void run() { doSomeStuff(); } }); 我试过了 Thread t = new Thread(new Runnable() { @Override public void run() { doSomeStuff(); } }); t.start(); t.join(); Stage […]

Java服务器multithreading

如何在Java中实现multithreading服务器? 服务器侦听端口(例如5000)并在单独的线程中提供连接并继续侦听更多客户端的位置。

Java线程:是否可以从同一JVM上运行的不同java程序查看/暂停/终止特定线程?

我有一个运行不同线程的程序’foo’,fooT1,fooT2,… fooTn。 现在,如果我想写另一个程序’bar’,这可能会杀死线程fooTr,那可能吗? 原因:其中一个线程fooTr跟踪产品许可证。 如果这个线程被杀死; 一个人可以无限期地运行这个产品。 并且杀死’foo’本身是可以容忍的’foo’,因为这正是许可证到期时所做的。 系统:Linux的Fedora发行版 注意:启动JVM和程序foo的命令放在/etc/init.d中,任何对rc.1 / rc.2 / rc.3结构有相当了解的人都可以更改/添加起始参数。 我希望我的问题很清楚。 如果没有,我总是可以编辑它。

扩展Thread类的主要优点是什么(或何时扩展Thread而不是实现runnable)

我试图找出扩展Thread类的可能优点是什么? 这是我描述的另一个问题的一部分:在Java中有两种创建线程的方法 从Thread类扩展 实现可运行的接口 如此处所述 ,使用runnable接口有几个好处。 我的问题是从Thread类扩展的优势是什么? 我想到的唯一优势是可以从Thread类扩展,让我们称之为ThreadExtended类。 然后他/她可以在ThreadExtended中添加更多function(我不知道它可能是什么),然后当他/她想要创建一个线程,而不是从Thread类扩展时,它从ThreadExtended扩展。 使用Thread类而不是Runnable接口有什么优势吗? 您是否知道从Thread类扩展的任何类,然后要求用户从这些类扩展,如果他们想要具有multithreadingfunction? public class ThreadExtended extends Thread{ //override some functions || add more functionality to Thread class } public class MyThread extends ThreadExtended{ public void run() { for(int i=0;i<10;i++) { System.out.println("Using ThreadExtended instead of Thread directly"); } } public static void main(String args[]) { MyThread myThread […]

Java,在multithreadingevnironments中通过散列统一划分传入的工作

我已经实现了一个java代码来执行传入任务(作为Runnable ),其中n个Threads基于他们的hashCode模块nThreads 。 理想情况下,工作应该在这些线程中一致地传播。 具体来说,我们将dispatchId作为每个Task的字符串。 这是这个java代码片段: int nThreads = Runtime.getRuntime().availableProcessors(); // Number of threads Worker[] workers = new Worker[nThreads]; // Those threads, Worker is just a thread class that can run incoming tasks … Worker getWorker(String dispatchId) { // Get a thread for this Task return workers[(dispatchId.hashCode() & Integer.MAX_VALUE) % nThreads]; } 重要提示:在大多数情况下,dispatchId是: String dispatchId […]