Tag: 线程线程安全

为什么这个类不是线程安全的?

class ThreadSafeClass extends Thread { private static int count = 0; public synchronized static void increment() { count++; } public synchronized void decrement() { count–; } } 任何人都可以解释为什么以上类不是线程安全的?

!=检查线程是否安全?

我知道像i++这样的复合操作不是线程安全的,因为它涉及多个操作。 但检查参考与自己的线程安全操作? a != a //is this thread-safe 我试图编程,并使用多个线程,但没有失败。 我想我无法在我的机器上模拟比赛。 编辑: public class TestThreadSafety { private Object a = new Object(); public static void main(String[] args) { final TestThreadSafety instance = new TestThreadSafety(); Thread testingReferenceThread = new Thread(new Runnable() { @Override public void run() { long countOfIterations = 0L; while(true){ boolean flag = instance.a != […]

在PHP中,线程安全或非线程安全是什么?

我看到了PHP的不同的二进制文件,如非线程或线程安全? 这是什么意思? 这些软件包有什么区别?

如何阻止通过实现可运行接口创build的线程?

我通过实现runnable接口创build了类,然后在我的项目的其他类中创build了许multithreading(接近10)。 如何阻止这些线程?

rxJava调度程序用例

在RxJava中有5种不同的调度程序可供select: immediate() :创build并返回在当前线程上立即执行工作的调度程序。 trampoline() :创build并返回一个调度程序,该调度程序在当前工作完成后执行当前线程上的队列。 newThread() :创build并返回一个Scheduler,为每个工作单元创build一个新的Thread。 计算() :创build并返回一个调度程序,用于计算工作。 这可以用于事件循环,处理callback和其他计算工作。 不要在此调度程序上执行IO绑定的工作。 使用调度程序。 io()代替。 io() :创build并返回用于IO绑定工作的计划程序。 该实现由Executor线程池支持,该线程池将根据需要增长。 这可以用于asynchronous执行阻塞IO。 不要在这个调度器上执行计算工作。 使用调度程序。 计算()代替。 问题: 前三个调度程序非常自我解释, 然而,我对计算和io有点困惑。 什么是“IO绑定的工作”? 它用于处理stream( java.io )和文件( java.nio.files )? 它用于数据库查询吗? 用于下载文件还是访问REST API? comput()与newThread()有什么不同? 是所有的计算()调用是在一个单一的(后台)线程而不是一个新的(后台)线程每次? 为什么在做IO工作时调用comput()是不好的? 为什么在做计算工作时调用io()是不好的?

使用线程奇数偶数打印

奇数偶数打印使用线程。创build一个线程类,线程的两个实例。 一个会打印奇数,另一个会打印偶数。 我做了以下编码。 但是到了死锁状态。 有人可以解释一下可能的原因吗? public class NumberPrinter implements Runnable{ private String type; private static boolean oddTurn=true; public NumberPrinter(String type){ this.type=type; } public void run() { int i=type.equals("odd")?1:2; while(i<10){ if(type.equals("odd")) printOdd(i); if(type.equals("even")) printEven(i); i=i+2; } } private synchronized void printOdd(int i){ while(!oddTurn){ try { wait(); } catch (InterruptedException e) { e.printStackTrace(); } } System.out.println(type + […]

如何创build一个运行STA线程的任务(TPL)?

使用线程非常简单 Thread thread = new Thread(MethodWhichRequiresSTA); thread.SetApartmentState(ApartmentState.STA); 如何使用WPF应用程序中的任务来完成相同的任务? 这里是一些代码: Task.Factory.StartNew ( () => {return "some Text";} ) .ContinueWith(r => AddControlsToGrid(r.Result)); 我得到一个InvalidOperationException 调用线程必须是STA,因为许多UI组件都需要这个。

对于不同的密钥,HashMap是线程安全的吗?

如果我有两个multithreading访问一个HashMap,但保证他们永远不会同时访问同一个键,那么这是否仍然会导致竞争状态呢?

我在哪里可以得到线程安全的CollectionView?

在后台线程上更新业务对象的集合时,出现以下错误消息: 这种types的CollectionView不支持从与分派器线程不同的线程对其SourceCollection的更改。 好的,这是有道理的。 但是它也提出了一个问题,哪个版本的CollectionView支持multithreading,如何让我的对象使用它?

.NET框架中的并发HashSet <T>

我有以下class级。 class Test{ public HashSet<string> Data = new HashSet<string>(); } 我需要从不同的线程更改字段“数据”,所以我想对我目前的线程安全实现一些意见。 class Test{ public HashSet<string> Data = new HashSet<string>(); public void Add(string Val){ lock(Data) Data.Add(Val); } public void Remove(string Val){ lock(Data) Data.Remove(Val); } } 有没有更好的解决scheme,直接去现场,并保护它从multithreading并发访问?