Tag: multithreading

std ::线程调用类的方法

可能重复: 用成员函数启动线程 我有一个小class: class Test { public: void runMultiThread(); private: int calculate(int from, int to); } 如何从方法runMultiThread()中的两个线程calculate两个不同的参数集(例如calculate(0,10) , calculate(11,20) runMultiThread() ? PS谢谢,我已经忘记,我需要通过this ,作为参数。

可靠地停止System.Threading.Timer?

那么我已经search了很多的解决scheme。 我正在寻找一种干净而简单的方法来阻止System.Threading.Timer的callback方法在我停止之后被调用。 我似乎无法find任何东西,这引起我,在诉诸,诉诸可怕的线程thread.sleep-thread.abort组合不寒而栗。 可以用锁来完成吗? 请帮助我find一个很好的方法来做到这一点。 谢谢

如何检查在Android的UI线程上运行?

我怎么知道运行的代码是否在主线程(UI线程)上执行? 使用Swing我使用isEventDispatchThread方法…

NetBeans / Java /新提示:在循环中调用Thread.sleep

在NetBeans中,有一个新的提示: Thread.sleep在循环中调用。 问题1:如何在一个循环中睡觉? 问题2:如果是问题,我应该怎么做? 更新:问题3:这是一些代码。 在这种情况下告诉我,如果我应该在循环中使用其他的东西而不是Thread.Sleep。 简而言之,这是由侦听客户端TCP连接的服务器使用的。 在达到与客户端的最大会话数的情况下,此处使用睡眠。 在这种情况下,我希望应用程序等待空闲的会话可用。 public class SessionManager { private static final int DEFAULT_PORT = 7500; private static final int SLEEP_TIME = 200; private final DatabaseManager database = new DatabaseManager(); private final ServerSocket serverSocket = new ServerSocket(DEFAULT_PORT); public SessionManager() throws IOException, SQLException { } public void listen() { while (true) if […]

Thread.stop和朋友在Java中安全吗?

java.lang.Thread中的stop() , suspend()和resume()不推荐使用,因为它们是不安全的 。 Sun推荐的解决方法是使用Thread.interrupt() ,但是这种方法在所有情况下都不起作用。 例如,如果您正在调用不显式或隐式地检查interrupted标志的库方法,则别无select,只能等待调用完成。 所以,我想知道是否有可能描述在线程上调用stop()情况(可certificate)。 例如, stop()一个什么也没做的线程,但在java.util.regex.Matcher上调用find(…)或match(…)是否安全? (如果有任何Sun工程师正在阅读这篇文章,我们将非常感激。 编辑 :答案,简单地重申,你不应该叫stop()因为它已被否决,不安全,无论是什么都没有问题的重点。 我知道在大多数情况下这是真正的不安全的,如果有一个可行的select,你应该总是使用它。 这个问题是关于它是安全的子集情况。 具体来说,这个子集是什么?

如何停止执行调度队列中的任务?

如果我有一个串行队列,我怎么能从主线程中告诉它立即停止执行并取消所有的任务?

临时表是否是线程安全的?

我正在使用SQL Server 2000,而且许多存储过程广泛使用临时表。 数据库有很多stream量,我担心创build和删除临时表的线程安全性。 比方说,我有一个存储过程,创build一些临时表,它甚至可以将临时表连接到其他临时表等,还可以说两个用户同时执行存储过程。 一个用户是否可以运行sp,并创build一个名为#temp的临时表,而另一个用户运行同一个sp,但由于名为#temp的表已经存在于数据库中而停止运行? 如果同一个用户在同一个连接上执行两次相同的存储过程呢? 是否还有其他奇怪的情况可能导致两个用户查询互相干扰?

当队列满时ThreadPoolExecutor块?

我正在尝试使用ThreadPoolExecutor执行大量的任务。 以下是一个假设的例子: def workQueue = new ArrayBlockingQueue<Runnable>(3, false) def threadPoolExecutor = new ThreadPoolExecutor(3, 3, 1L, TimeUnit.HOURS, workQueue) for(int i = 0; i < 100000; i++) threadPoolExecutor.execute(runnable) 问题是我很快得到java.util.concurrent.RejectedExecutionException,因为任务的数量超过了工作队列的大小。 但是,我期望的行为是让主线程阻塞,直到队列中有空间。 什么是完成这个最好的方法?

为什么这个包含rand()的C ++ 11代码比使用multithreading更慢?

我正在尝试新的C ++ 11线程,但是我的简单testing具有糟糕的多核性能。 作为一个简单的例子,这个程序加起来一些平方随机数。 #include <iostream> #include <thread> #include <vector> #include <cstdlib> #include <chrono> #include <cmath> double add_single(int N) { double sum=0; for (int i = 0; i < N; ++i){ sum+= sqrt(1.0*rand()/RAND_MAX); } return sum/N; } void add_multi(int N, double& result) { double sum=0; for (int i = 0; i < N; ++i){ sum+= […]

为什么这个简单的std :: thread示例不起作用?

试了用g++ -std=gnu++0x t1.cpp和g++ -std=c++0x t1.cpp编译的下面的例子,但是这两个都导致例子中止。 $ ./a.out terminate called after throwing an instance of 'std::system_error' what(): Aborted 这是样本: #include <thread> #include <iostream> void doSomeWork( void ) { std::cout << "hello from thread…" << std::endl; return; } int main( int argc, char *argv[] ) { std::thread t( doSomeWork ); t.join(); return 0; } 我试图在Ubuntu 11.04上: $ […]