相关疑难解决方法(0)

为什么在匿名类中只能访问最终变量?

  1. a只能在这里决赛.为什么?如何aonClick()不将其保留为私有成员的情况下重新分配方法?

    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)
  2. 如何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)

java event-handling anonymous-class

341
推荐指数
7
解决办法
11万
查看次数

变量在内部类中访问.需要宣布最终

所以标题说明了一切.我的内部出现了编译错误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 android

107
推荐指数
5
解决办法
17万
查看次数

Java内存模型 - 有人可以解释一下吗?

年复一年,我试图了解部分与内存模型和并发交易的Java规范.我不得不承认我惨遭失败.是的'我理解锁和"synchronized"以及wait()和notify().我可以使用它们,谢谢.我甚至对"易变"的含义有一个模糊的想法.但所有这些都不是来自语言规范 - 而是来自一般经验.

以下是我要问的两个示例问题.我对特定答案并不是那么感兴趣,因为我需要理解答案是如何从规范中得出的(或者可能是我如何得出规范没有答案).

  • "挥发性"究竟做了什么?
  • 写入变量原子?它取决于变量的类型吗?

java concurrency

28
推荐指数
3
解决办法
4136
查看次数

Servlet的doFilter方法中的StringBuffer或StringBuilder?

我正在实现我的自定义过滤器:

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够吗?

java

5
推荐指数
1
解决办法
1314
查看次数

字符串的plus运算符的线程安全性,包括优化

这篇文章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:

我仍在寻找包含有关可变对象的积极内联代码的答案.

java concurrency optimization multithreading jvm

5
推荐指数
3
解决办法
407
查看次数

如何使方法线程安全

假设我有以下方法

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?你还有其他建议吗?

java multithreading

2
推荐指数
1
解决办法
1053
查看次数

仅具有局部变量的实例方法的线程安全性

通常,同时调用使用局部变量的实例方法是否只对线程安全有影响?

这是一个简短的例子.多个线程将调用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)

java multithreading

2
推荐指数
1
解决办法
674
查看次数

java中单实例方法的线程安全性

如果我有一个对象A的实例并且它有一个实例方法foo(),只有在该方法中创建和使用的变量是该方法线程安全,即使许多线程访问相同的实例?

如果是,如果对象A上的实例方法bar()创建了许多线程并在上述文本中调用方法foo(),这仍然适用吗?

这是否意味着每个线程都获得该方法的"副本",即使它属于同一个实例?

我故意不使用synchronized关键字.

谢谢

java multithreading

1
推荐指数
1
解决办法
1038
查看次数