问题标签 [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.
java - 如何从线程返回字符串或从线程获取字符串?
我需要从线程中获取字符串值,但我不明白!全局变量不起作用!你能帮我吗?
这是我的代码。我需要使用dataString
:
android - 如何在不等待的情况下生成多个上传线程
我有以下类,它负责从收据表中获取非同步收据并将它们上传到服务器,以下函数现在只是遍历游标结果集:
我知道我可以使用以下方法启动多个异步任务:
我计划从 IntentService 调用上述方法。所以这是我的困惑:
1) do while 循环会等到控制从 asyncTask 返回以进行下一次迭代吗?
2) 在 intentService 中使用和生成多个线程会破坏我的程序吗?
3)我是否Runnable r = new Runnable()
比 AsyncTask 更好使用 - 因为我不打算进行任何 UI 操作?
java - 同步(this)是否仅锁定同步块或所有“this”代码?
如果我将运行几个线程,其中一些调用静态函数getCount()
,其中一些创建新实例。我想在每次调用时访问getCount()
实际实例数。
- 代码中的两个选项有区别吗?
- 如果我锁定“
this
”不应该意味着在构造函数退出同步块之前我不能调用getCount()
(假设我不在 getCount() 上写同步)。 - 如果我在代码中的某个位置执行同步块,它是只锁定同步块还是锁定所有“
this
”代码? - 从这里开始编辑:谢谢大家,这非常有帮助,但是在您的回答之后我还有一些问题。
- 如果我理解正确, synchronized(this) 块不会影响(或连接到)静态同步函数(在锁定术语中不是 numOfInstances 增量)?
- 是否有更好的选择来使增量和 getCount() 函数线程安全?(比如打开一个静态对象并做 synchronized(obj) 而不是 synchronized(this) - 朋友建议)。
- 如果我在 ObjectCounter 类中有一个 f1() 方法(非静态),而一个线程在 synchronized(this) 中,其他线程可以进入 f1() 块(不是同步类或内部有同步块)吗?
- 如果我在 ObjectCounter 中有 f1() 方法(非静态)和 f2() 方法(非静态),则在 f1() 中我有 synchronized(this) 块。当一个线程在 synchronized(this) 块中时,其他线程可以进入 f1() 块(不是同步类或内部有同步块)吗?(假设两个线程在同一个实例上“工作”)
`
java - 在 30 秒内停止线程并重试
我有一个正在调用外部应用程序的 Restful 服务。此应用程序使我的服务挂起。因此,当用户调用我的服务时,由于这个外部应用程序可能需要一个小时。外部应用程序只需几秒钟即可执行。否则,出了点问题。所以我希望我的服务中的代码最多执行 30 秒。如果超过 30 秒,我想停止服务并重新启动它。
这是我想要的:
我不希望代码每 30 秒执行一次。我希望能够停止代码执行并从头开始重新启动它。
这是服务:
android - 我认为线程没有正确终止
我的 android 应用程序中有以下函数(单击按钮时调用),它启动一个线程:
验证线程:
线程正确运行......但在最后一行之后,它不会回到它的开始点。我不明白为什么会发生这种情况,因为我以前使用过线程并且它们都可以正常工作。
我知道我可以在线程内提供 getMyLocation 函数,但我真的需要这种方式。
我搜索了类似的问题,但没有任何帮助..我在这里做错了什么?提前致谢。
java - 这个循环哪里出错了?
我目前正在使用 java 中的基于文本的 rpg。玩家每走一定步数,就会发生随机战斗。每次我运行战斗系统时,程序都会进入一个永远循环并且屏幕只是冻结。
我怎样才能解决这个问题?这是处理所有这些的主类的代码。
android - 通过用户交互绘制到画布有点滞后
我开始用Android学习画布绘图,我想做一个简单的应用程序。
在应用启动时,一条所谓的“蛇”开始在屏幕上移动,当用户点击屏幕时,“蛇”会改变方向。
我很容易做到了,但有一个小问题:
当用户点击屏幕时,蛇有时会在特定时刻改变方向,有时会在几毫秒后改变方向。因此,用户可以清楚地感觉到交互没有应有的响应,即使你非常集中注意力,蛇的确切转动时刻也很难预测。一定有其他方法可以比我做得更好。
请检查我的代码,我使用带有 Runnable 的处理程序来移动蛇。(在画布上绘制并每次将其设置为视图的背景,即每次将 setContentView 设置为我的 Activity。
代码:
编辑:
我已经修改了我的代码,现在视图包含了所有细节,我使用了onDraw和invalidate方法,就像 Philipp 建议的那样。
结果稍微好一点,但我仍然可以清楚地感觉到用户交互导致方向变化滞后。
也许我应该用线程做些什么?
java - 如何停止服务中的线程?调用 stopService 方法后?在安卓中
使用服务上传图片
在我的应用程序中,我正在将图像上传到服务器,我使用后台服务来执行此操作,上传是在服务中的另一个线程中执行的。我已经读过,服务在 UI 线程上运行,服务中的线程是另一个过程,我需要的是,我想在单击按钮调用 stopService 时取消上传。所以我想杀死那个线程,我试过这段代码但它不能正常工作。有人可以帮忙吗?请?
onDestroy 方法
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 线程异步调用类似的东西来用新工作更新进度条吗?我不确定这是多么可行(当我写这个问题时它突然出现在我的脑海中)所以我接下来会尝试。
这里有很多信息和问号,如果我的风格有点分散,请见谅。如果需要,我可以详细说明,但这已经是一堵文字墙了。任何信息,建议或想法表示赞赏。