* Guangdong Ocean University, Zhanjiang, GuangDong, China.
* All rights reserved.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
package
com.lurencun.cfuture09.androidkit.utils.lang
;
*
@author
Geek_Soledad (66704238@51uc.com)
public interface
IdGenerator<
T
> {
*
生成下一个
id
并返回。
*
@return
返回新的
id.
public
T
next
()
;
}
/**
* int 类型的自增长ID生成类,支持多线程。
* @Author Geek_Soledad (66704238@51uc.com)
public class IncreaseIntId implements IdGenerator<Integer> {
private AtomicInteger id;
public IncreaseIntId() {
id = new AtomicInteger();
public IncreaseIntId(int initialId) {
id = new AtomicInteger(initialId);
@Override
public Integer next() {
return id.incrementAndGet();
1.对于C++而言,不同的系统,int所占字节长度也不同。int在32位系统中为4字节,也就是32位。在一些16位系统中,int为2字节,在64位系统中int为8字节。
以32位系统为例:
unsigned int: 0 ~ 4294967295
int : -2147483648 ~ 2147483647
2.对于32位系统的带符号型int,2
@Resource(name = "dashboardTemplate") protected JdbcTemplate systemJDBCTemplate;
//这个是Dao里面的实现方法
public Long insertAndGetKey(final Topic topic) { KeyHolder keyHolder = new Generate...
1、Java自增(减)不是原子操作。自增自减不是原子性操作,也就是说不是线程安全的运算。因此,在多线程下,如果你要对共享变量实现自增自减操作,就要加锁,或者使用JDK提供的原子操作类(如AtomincInteger,AtomicLong等)提供的原子性自增自减方法。
2、使用原子类和synchronized都能保证线程安全,但是其实现原理不同。
3、Synchronized 是仅适用于方法和块但不适用于变量和类的修饰符。
所采用的的方法是只写出包含这三条语句的方法,编译成字节码,然后分析字节码指令。
下面是我的java源码:public class Some {
public void add1(int a){
public void ad
我们在使用mysql数据库时,习惯使用int型作为主键,并设置为自增,这既能够保证唯一,使用起来又很方便,但int型的长度是有限的,如果超过长度怎么办呢?
我们先创建一个测试表,创建语句如下:
CREATE TABLE test1 (
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(20)
然后我们插入两条数据:
INSERT INTO test1 VALUES(NULL,'小牛');
INSERT INTO test1 VALU
一、synchronized关键字
二、数据库的悲观锁
select * from t_table_id where table_name='t_client' for update; //查询时把该信息锁住,适合任何数据库
commit;
for (t = ; t < NUM_THREADS; t++) {
printf("Creating thread %ld\n", t);
rc = pthread_create(&threads[t], NULL, print_hello, (void *)t);
if (rc) {
printf("ERROR; return code from pthread_create() is %d\n", rc);
exit(-1);
pthread_exit(NULL);
希望对您有帮助。