a只能在这里决赛.为什么?如何a在onClick()不将其保留为私有成员的情况下重新分配方法?
private void f(Button b, final int a){
b.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
int b = a*5;
}
});
}
Run Code Online (Sandbox Code Playgroud)如何5 * a点击它返回?我的意思是,
private void f(Button b, final int a){
b.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
int b = a*5;
return b; // but return type is void
}
});
}
Run Code Online (Sandbox Code Playgroud)所以标题说明了一切.我的内部出现了编译错误onClick.
这是代码.
public class fieldsActivity extends Activity {
Button addSiteButton;
Button cancelButton;
Button signInButton;
/**
* Called when the activity is first created.
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// to create a custom title bar for activity window
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
setContentView(R.layout.fields);
// use custom layout title bar
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.topbar);
Pager adapter = new Pager();
ViewPager mPager = (ViewPager) findViewById(R.id.fieldspager);
mPager.setAdapter(adapter);
mPager.setCurrentItem(1);
addSiteButton = (Button) findViewById(R.id.addSiteButton);
addSiteButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mPager.setCurrentItem(2, true); …Run Code Online (Sandbox Code Playgroud) 年复一年,我试图了解部分与内存模型和并发交易的Java规范.我不得不承认我惨遭失败.是的'我理解锁和"synchronized"以及wait()和notify().我可以使用它们,谢谢.我甚至对"易变"的含义有一个模糊的想法.但所有这些都不是来自语言规范 - 而是来自一般经验.
以下是我要问的两个示例问题.我对特定答案并不是那么感兴趣,因为我需要理解答案是如何从规范中得出的(或者可能是我如何得出规范没有答案).
我正在实现我的自定义过滤器:
public class MyFilter implements javax.servlet.Filter
Run Code Online (Sandbox Code Playgroud)
我应该在这个doFilter方法中使用哪个- StringBuffer或StringBuilder?
我想以这种方式使用它:
StringBuffer stringBuffer = new StringBuffer();
stringBuffer.append(MY_CODE_HERE);
response.sendRedirect(stringBuffer.toString());
Run Code Online (Sandbox Code Playgroud)
要么...
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append(MY_CODE_HERE);
response.sendRedirect(stringBuilder.toString());
Run Code Online (Sandbox Code Playgroud)
我知道这StringBuffer是线程安全的,但这还StringBuilder够吗?
这篇文章说a += b的相当于
a = new StringBuilder()
.append(a)
.append(b)
.toString();
Run Code Online (Sandbox Code Playgroud)
假设我有这段代码:
public class MultiThreadingClass extends SomeThirdPartyClassThatExtendsObject{
public void beginmt(String st) throws IOException {
//st is a thread number
st = new File("c:\\somepath").getCanonicalPath()+"\\"+st;
System.out.println(st);
}
}
Run Code Online (Sandbox Code Playgroud)
假设beginmt在MultiThreading类的单个实例上同时运行多次(线程号为1到15500).可能有这样的情况,它可以打印以下,即一些线程数丢失,一些数字加倍?
c:\somepath\2
c:\somepath\1
c:\somepath\1
c:\somepath\4
c:\somepath\5
c:\somepath\6
c:\somepath\7
c:\somepath\8
c:\somepath\8
c:\somepath\10
...
Run Code Online (Sandbox Code Playgroud)
编辑:
是否安全地说+运算符不会进入某些不安全的发布问题?我想StringBuilder的可以优化到的东西,就像一个实例变量在这种情况下,它可以被不安全公布.
编辑2:
就JLS,上述帖子和上述代码的类似类文件进行检查,要使用的StringBuilders似乎必须包含在不同的堆栈帧中.但是,我仍然想检查某种形式的激进优化是否会导致StringBuilders以某种方式被集中式StringBuilder替换.这听起来可能像听起来合乎逻辑的,当它预测的对象是在非固定的方式只是实施的时候,其实这样的对象可能是不断优化优化.
找到了stringopts.cpp,但还没有找到时间来完全检查它.我希望找到涉及此源文件详细信息的答案.
编辑3:
我仍在寻找包含有关可变对象的积极内联代码的答案.
假设我有以下方法
public static String addStringItems(String[] items, boolean forceUpperCase) {
StringBuilder builder = new StringBuilder(items.length);
for (String item : items) {
builder.append(item);
}
return forceUpperCase ? builder.toString().toUpperCase() : builder.toString();
}
Run Code Online (Sandbox Code Playgroud)
现在,我如何使其线程安全,标记synchronized足够?或者我应该使用StringBuffer而不是StringBuilder?你还有其他建议吗?
通常,同时调用使用局部变量的实例方法是否只对线程安全有影响?
这是一个简短的例子.多个线程将调用a();.
public class A {
public boolean a(File file) throws Exception {
boolean t = true;
FileInputStream fin = null;
BufferedInputStream bin = null;
try {
fin = new FileInputStream(file);
bin = new BufferedInputStream(fin);
while(bin.read() > 0) {}
return t;
finally {
try {
if (in != null) in.close();
} catch (IOException e) {}
try {
if (fin != null) fin.close();
} catch (IOException e) {}
}
}
}
Run Code Online (Sandbox Code Playgroud) 如果我有一个对象A的实例并且它有一个实例方法foo(),只有在该方法中创建和使用的变量是该方法线程安全,即使许多线程访问相同的实例?
如果是,如果对象A上的实例方法bar()创建了许多线程并在上述文本中调用方法foo(),这仍然适用吗?
这是否意味着每个线程都获得该方法的"副本",即使它属于同一个实例?
我故意不使用synchronized关键字.
谢谢