小编Bob*_*Bob的帖子

Java赋值问题 - 这是原子的吗?

我对Java的分配有一些疑问.

  • 字符串

我上课了:

public class Test {
 private String s;

 public synchronized void setS(String str){
  s = s + " - " + str;
 }

 public String getS(){
  return s;
 }
}
Run Code Online (Sandbox Code Playgroud)

我在我的setter中使用"synchronized",并在我的getter中避免它,因为在我的应用程序中,有大量的数据获取,并且设置很少.必须同步设置以避免不一致.我的问题是:获取和设置变量原子?我的意思是,在多线程环境中,Thread1即将设置变量s,而Thread2即将获得"s".有没有办法getter方法可以得到一些不同于s的旧值或s的新值(假设我们只有两个线程)?在我的应用程序中获取新值并不是一个问题,并且获取旧值不是问题.但我能得到别的东西吗?

  • HashMap的获取和推送怎么样?

考虑到这个:

    public class Test {
        private Map<Integer, String> map = Collections.synchronizedMap(new HashMap<Integer, String>());

        public synchronized void setMapElement(Integer key, String value){
         map.put(key, value);
        }

        public String getValue(Integer key){
         return map.get(key);
        }
}
Run Code Online (Sandbox Code Playgroud)

投入和获得原子?HashMap如何处理将元素放入其中?它首先删除旧值并放入现在的值吗?我可以获得除旧值或新值之外的其他值吗?

提前致谢!

java multithreading variable-assignment

9
推荐指数
2
解决办法
3308
查看次数

Tomcat6 MySql JDBC数据源配置

我总是使用Spring的依赖注入来获取数据源对象并在我的DAO中使用它们,但现在,我必须编写一个没有它的应用程序.

有了Spring,我可以这样写:

<bean id="dataSource"
    class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="com.mysql.jdbc.Driver" />
    <property name="url" value="jdbc:mysql://127.0.0.1/app?characterEncoding=UTF-8" />
    <property name="username" value="u" />
    <property name="password" value="p" />
</bean>
Run Code Online (Sandbox Code Playgroud)

但是如何在没有Spring或任何东西的情况下在我的DAO中使用数据源?我只使用servlet和JSP.性能是非常重要的因素.

java mysql tomcat datasource jdbc

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