我在Java 8中玩lambdas,我遇到了警告local variables referenced from a lambda expression must be final or effectively final.我知道当我在匿名类中使用变量时,它们必须在外部类中是最终的,但仍然 - 最终和有效最终之间有什么区别?
我需要一个"Runnable接受一个参数",虽然我知道这样的runnable并不存在.
这可能指出我的应用程序设计中的根本缺陷和/或疲惫的大脑中的心理障碍,所以我希望在这里找到关于如何完成以下内容的一些建议,而不违反基本的OO原则:
private Runnable mOneShotTask = new Runnable(String str) {
public void run(String str) {
someFunc(str);
}
};
Run Code Online (Sandbox Code Playgroud)
知道如何完成上述内容吗?
我有以下内容:
Runnable done = new Runnable()
{
public void run()
{
System.out.println("Hello");
}
};
Run Code Online (Sandbox Code Playgroud)
然后在我的Android活动中,我会称之为:
runOnUIThread(done);
Run Code Online (Sandbox Code Playgroud)
然后我打电话给你.但是,我希望"Hello"不要硬编码,所以我可以传入它.否则我将必须为我想要打印的每个字符串都有一个这样的声明.
(这实际上是一个android问题,但是它缩小到基本Java,所以更容易回答)
谢谢
如何将参数传递给java中已经运行的线程 - 而不是在构造函数中,并且可能没有使用wait()(可能??)
类似于" 如何将参数传递给Java线程"中的注释?
你的意思是将参数传递给已经运行的线程?因为所有当前的答案都是关于将参数传递给新线程... - Valentin Rocher 09年5月18日10:43
[编辑]
是的,我正在寻找像生产者/消费者模式的东西.
我想要的东西就像一个线程,其中有处理和准备键盘输入.另一个线程只是监视网络并将接收到的文本传递给处理线程.
如何使用扩展名将参数从主线程传递到PHP中的新线程pthreads?
与此类似的东西如何将参数传递给Java线程?只是在PHP中。
我已经看到了:如何将参数传递给Java Thread?
但我不知道究竟是怎么用的.所以我制作了简单的代码来节省宝贵的时间:
class ThreadParam implements Runnable {
static int c;
public ThreadParam(int a, int b){
int c = a+b;
}
public void run(){
System.out.println(c);
}
}
public class ThreadParamTest {
public static void main(String args[]){
Runnable r = new ThreadParam(1000,2000);
new Thread(r).start();
}
}
Run Code Online (Sandbox Code Playgroud)
为什么这个结果为0?我认为应该是3000.也许变量"int c"不是调度run()方法.我该如何解决这个问题?
我开始学习线程并遇到了问题.
我有一个评分系统,旨在为临时的addedPoints变量添加一个点,向玩家展示他们最近获得的积分数.然后在大约1秒后,添加的分数应该添加到球员得分.
我的尝试看起来像这样:
public static void AddPoints(int points)
{
for (int i = 0; i < points; i++)
{
Thread addThread = new Thread(new ThreadStart(ThreadedPoint));
}
}
private static void ThreadedPoint()
{
addedPoints += 1;
Thread.Sleep(1000);
score += 1;
addedPoints -= 1;
}
Run Code Online (Sandbox Code Playgroud)
这有两个问题.首先它只允许我为每个线程添加1点,这远非理想.其次,它实际上并不起作用.添加的积分和分数都没有更新.我怎样才能解决这个问题?