问题标签 [java-threads]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
59 浏览

java - 如何从线程返回字符串或从线程获取字符串?

我需要从线程中获取字符串值,但我不明白!全局变量不起作用!你能帮我吗?

这是我的代码。我需要使用dataString

0 投票
0 回答
92 浏览

android - 如何在不等待的情况下生成多个上传线程

我有以下类,它负责从收据表中获取非同步收据并将它们上传到服务器,以下函数现在只是遍历游标结果集:

我知道我可以使用以下方法启动多个异步任务:

我计划从 IntentService 调用上述方法。所以这是我的困惑:

1) do while 循环会等到控制从 asyncTask 返回以进行下一次迭代吗?

2) 在 intentService 中使用和生成多个线程会破坏我的程序吗?

3)我是否Runnable r = new Runnable()比 AsyncTask 更好使用 - 因为我不打算进行任何 UI 操作?

0 投票
4 回答
3154 浏览

java - 同步(this)是否仅锁定同步块或所有“this”代码?

如果我将运行几个线程,其中一些调用静态函数getCount(),其中一些创建新实例。我想在每次调用时访问getCount()实际实例数。

  1. 代码中的两个选项有区别吗?
  2. 如果我锁定“ this”不应该意味着在构造函数退出同步块之前我不能调用getCount()(假设我不在 getCount() 上写同步)。
  3. 如果我在代码中的某个位置执行同步块,它是只锁定同步块还是锁定所有“ this”代码?
  4. 从这里开始编辑:谢谢大家,这非常有帮助,但是在您的回答之后我还有一些问题。
  5. 如果我理解正确, synchronized(this) 块不会影响(或连接到)静态同步函数(在锁定术语中不是 numOfInstances 增量)?
  6. 是否有更好的选择来使增量和 getCount() 函数线程安全?(比如打开一个静态对象并做 synchronized(obj) 而不是 synchronized(this) - 朋友建议)。
  7. 如果我在 ObjectCounter 类中有一个 f1() 方法(非静态),而一个线程在 synchronized(this) 中,其他线程可以进入 f1() 块(不是同步类或内部有同步块)吗?
  8. 如果我在 ObjectCounter 中有 f1() 方法(非静态)和 f2() 方法(非静态),则在 f1() 中我有 synchronized(this) 块。当一个线程在 synchronized(this) 块中时,其他线程可以进入 f1() 块(不是同步类或内部有同步块)吗?(假设两个线程在同一个实例上“工作”)

`

0 投票
2 回答
660 浏览

java - 在 30 秒内停止线程并重试

我有一个正在调用外部应用程序的 Restful 服务。此应用程序使我的服务挂起。因此,当用户调用我的服务时,由于这个外部应用程序可能需要一个小时。外部应用程序只需几秒钟即可执行。否则,出了点问题。所以我希望我的服务中的代码最多执行 30 秒。如果超过 30 秒,我想停止服务并重新启动它。

这是我想要的:

我不希望代码每 30 秒执行一次。我希望能够停止代码执行并从头开始重新启动它。

这是服务:

0 投票
1 回答
67 浏览

android - 我认为线程没有正确终止

我的 android 应用程序中有以下函数(单击按钮时调用),它启动一个线程:

验证线程:

线程正确运行......但在最后一行之后,它不会回到它的开始点。我不明白为什么会发生这种情况,因为我以前使用过线程并且它们都可以正常工作。

我知道我可以在线程内提供 getMyLocation 函数,但我真的需要这种方式。

我搜索了类似的问题,但没有任何帮助..我在这里做错了什么?提前致谢。

0 投票
1 回答
84 浏览

java - 这个循环哪里出错了?

我目前正在使用 java 中的基于文本的 rpg。玩家每走一定步数,就会发生随机战斗。每次我运行战斗系统时,程序都会进入一个永远循环并且屏幕只是冻结。

我怎样才能解决这个问题?这是处理所有这些的主类的代码。

0 投票
3 回答
284 浏览

android - 通过用户交互绘制到画布有点滞后

我开始用Android学习画布绘图,我想做一个简单的应用程序。

在应用启动时,一条所谓的“蛇”开始在屏幕上移动,当用户点击屏幕时,“蛇”会改变方向。

我很容易做到了,但有一个小问题:

当用户点击屏幕时,蛇有时会在特定时刻改变方向,有时会在几毫秒后改变方向。因此,用户可以清楚地感觉到交互没有应有的响应,即使你非常集中注意力,蛇的确切转动时刻也很难预测。一定有其他方法可以比我做得更好。

请检查我的代码,我使用带有 Runnable 的处理程序来移动蛇。(在画布上绘制并每次将其设置为视图的背景,即每次将 setContentView 设置为我的 Activity。

代码:

编辑:

我已经修改了我的代码,现在视图包含了所有细节,我使用了onDrawinvalidate方法,就像 Philipp 建议的那样。

结果稍微好一点,但我仍然可以清楚地感觉到用户交互导致方向变化滞后。

也许我应该用线程做些什么?

0 投票
2 回答
1407 浏览

java - 如何停止服务中的线程?调用 stopService 方法后?在安卓中

使用服务上传图片

在我的应用程序中,我正在将图像上传到服务器,我使用后台服务来执行此操作,上传是在服务中的另一个线程中执行的。我已经读过,服务在 UI 线程上运行,服务中的线程是另一个过程,我需要的是,我想在单击按钮调用 stopService 时取消上传。所以我想杀死那个线程,我试过这段代码但它不能正常工作。有人可以帮忙吗?请?

onDestroy 方法

0 投票
1 回答
725 浏览

java - 正确使用ProgressMonitorDialog的取消按钮,中断线程,显示进度

我已经使用 Java 几年了,但是我的线程知识是垃圾。我用谷歌搜索了很多,发现了一些关于一般使用的好信息,ProgressMonitorDialog但没有像我的确切情况一样。

我目前正在使用 aProgressMonitorDialog作为 的实例的包装器IRunnableWithProgress,而该实例又是 a 的包装器Thread。这工作正常,但现在我试图让取消按钮触发正在运行的线程上的中断,我可以处理它以优雅地终止操作。

需要注意的一件重要事情是我有两个插件;“数据”和“用户界面”。数据插件包含所有实际工作,并且必须独立于 UI 或任何 Eclipse 插件。UI 插件应该尽可能的薄。

这是我到目前为止所获得的代码的精炼版本。

数据:

用户界面:

因此,当单击取消按钮时,myThread.interrupt()将调用。现在线程需要响应中断。Data.createThread()现在看起来像这样:

像这样轮询中断状态可能相当冗长,但我看不出这会导致任何问题。

但是,如果Thing.operationA()不是原子的,并且可以在该函数中被中断怎么办:

我将如何检测和处理 和 之间的中断状态的atomic1()变化atomic2()?是不是像Thread.currentThread.isInterrupted()再次轮询一样简单?或者我需要传递一些volatile对象来跟踪中断状态吗?我应该扔吗InterruptedException什么地方吗?

我的第二个问题是关于跟踪和报告进度的。我明白IProgressMonitor.worked()应该如何使用。如前所述,我的数据线程包含 3 个操作。是否可以将该信息传递给 UI,以便我可以跟踪进度ProgressMonitorDialog

理想情况下,是这样的:

但是如前所述,数据不能依赖于 Eclipse,因此IProgressMonitor在这种情况下传递不起作用。

我可以在我的线程中有一个变量跟踪进度,然后调用类似myThread.getProgress()从 UI 线程异步调用类似的东西来用新工作更新进度条吗?我不确定这是多么可行(当我写这个问题时它突然出现在我的脑海中)所以我接下来会尝试。

这里有很多信息和问号,如果我的风格有点分散,请见谅。如果需要,我可以详细说明,但这已经是一堵文字墙了。任何信息,建议或想法表示赞赏。

0 投票
0 回答
81 浏览

multithreading - Post invalidate 方法在 Thread 类中有什么作用

这是我的代码: