Tag: multithreading

将Java Threading Class放入一个单独的类中

考虑以下SWT代码示例: http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet151.java?view=co 如何分隔内联定义的类? Thread thread = new Thread() { public void run() { … } }; 我想定义一个单独的类来更新表,就像它在这里一样。 如何将列表传回表中? 示例代码?

Java:带有Callables的ExecutorService:invokeAll()和future.get() – 结果是否正确?

我使用Java中的ExecutorService来调用带有invokeAll()线程。 之后,我使用future.get()获取结果集。 以我创建线程的相同顺序收到结果非常重要。 这是一个片段: try { final List threads = new ArrayList(); // create threads for (String name : collection) { final CallObject object = new CallObject(name); threads.add(object); } // start all Threads results = pool.invokeAll(threads, 3, TimeUnit.SECONDS); for (Future future : results) { try { // this method blocks until it receives the result, […]

哪个更快? 更多可运行的工作更少,或者更少的可运行工作? (ExecutorService的)

我试图弄清楚如何从multithreading应用程序中获得最大性能。 我有一个我创建的线程池,如下所示: ExecutorService executor = Executors.newFixedThreadPool(8); // I have 8 CPU cores. 我的问题是,我应该将工作分成只有8个runnables / callables,这与线程池中的线程数相同,还是应该将它分成1000000 runnables / callables呢? for (int i = 0; i < 1000000; i++) { Callable worker = new MyCallable(); // Each worker does little work. Future submit = executor.submit(worker); } long sum = 0; for (Future future : list) sum += […]

当一个线程被中断/杀死时,最终块可能无法执行吗?

在Java教程中,它说到try { … } finally { … } : 注意:如果在执行try或catch代码时JVM退出,则finally块可能无法执行。 同样,如果执行try或catch代码的线程被中断或终止,则即使应用程序作为一个整体继续 ,finally块也可能不会执行。 是否可以中断或杀死一个线程( 我认为这是不可能的? ),以便在运行此线程的JVM 未退出/ finally时不会执行finally块? (我很困惑,因为上面引用的内容非常明确,误解的空间不大。) 编辑:将问题分解为其核心意图。

Thread.sleep()是否使UI线程进入hibernate状态?

这会使当前的UI线程进入睡眠状态吗? try { Thread.sleep(20); onProgressUpdate(i); } catch (InterruptedException e) { e.printStackTrace(); }

如何使volatile count操作成为线程安全的

我一直在经历JCIP,作者在那里说.. 线程限制的一个特例适用于volatile变量。 只要确保volatile变量仅从单个线程写入,对共享的volatile变量执行读 – 修改 – 写操作是安全的。 例如,count ++被认为是一个复合操作(读取值,添加一个值,并更新值)并将count指定为volatile不会使此操作成为primefaces,因此这里不保证线程安全! 我对吗 ?? 但是这里作者说我们可以修复它,如果我们确保volatile变量只是从一个线程写的。 我没理解这一点。 请提供说明。

使用JAVA中的multithreading(生产者消费者模型)读取和写入文件

我被困在这里,有人可以解释为什么消费者线程在下面的代码中运行先前的生产者线程。 当生产者没有放置任何内容时,消费者线程如何运行。 程序错了吗? 实现: –为从给定文件夹中拾取的每个文件运行生成消费者线程。 例如,如果指定的文件夹有3个,那么每个文件必须启动2个线程(生产者/消费者),这使得线程数为6。 import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.io.RandomAccessFile; import java.util.ArrayList; import java.util.List; import java.util.Vector; class sharedInt { private int syncUponInt; private boolean available = false; private File processingFile; private static File[] listOfFile; sharedInt(File[] totalList) { listOfFile = totalList; } public int getTotalCount() { return listOfFile.length; } public static File[] […]

用Java实现生产者消费者

这是家庭作业的生产者消费者模式的实现。 以下实现有什么问题。 我已经google了各种实现,但我无法理解我的错误。 我有一个共享队列 我在同一个锁上同步生产者和消费者 履行 共享队列: class SharedQueue{ public static Queue queue = new LinkedList(); } 制片人主题: //The producer thread class Producer implements Runnable{ public void run() { synchronized (SharedQueue.queue) { if(SharedQueue.queue.size() >=5) { try { SharedQueue.queue.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } Random r = new Random(); int x = r.nextInt(10); […]

如何有效地使用HttpComponentsClientHttpRequestFactory和RestTemplate?

我在我的一个项目中使用RestTemplate及其工厂HttpComponentsClientHttpRequestFactory 。 在这个项目中,我需要对我的服务器进行Http url调用,该服务器运行一个restful服务,它将响应作为JSON字符串返回。 以下是我的代码 – public class GetUserClientData { public String getData(KeyHolder keys) { return new HTTPRequestAccess(keys).makeHttpRequest(); } } 下面是我的包装HttpClient部分的类 – public class HTTPRequestAccess { // should this be static? private RestTemplate restTemplate; private KeyHolder keys; private int timeout; public HTTPRequestAccess(KeyHolder keys){ this(keys.getTimeoutValue()); // setting timeout to RestTemplate this.keys = keys; } public HTTPRequestAccess(int […]

程序停止:wait()和notify()

我试图实现这一点:创建两个不同的线程,一个打印奇数,一个打印偶数。 一旦一个线程打印一个数字,它就必须等待另一个线程,依此类推,即一个接一个。 为实现这一点,我使用synchronized块以及wait()和notify()。 我正在创建一个类,其对象将用于传递给两个线程中的synchronized块。 这是代码: – >这是用于传递给synchronized块的对象。 package com.vipin.multithread.variousdemos; public class SyncObject { public SyncObject () { } } 奇数线程: package com.vipin.multithread.variousdemos; public class OddThread implements Runnable { private Thread t; int index=0; SyncObject so=null; int odd_nums[] = {1,3,5,7,9}; public OddThread(SyncObject so) { t = new Thread(this,”Odd Thread”); this.so = so; t.start(); } public Thread […]