这个题太常见了,但是要自己独立的默写出来也不是很容易的哦!
代码:
package renrenPratice;
public class testSomeThread {
/**
* @param args
*/
int j = 10;
public static void main(String[] args) {
// TODO Auto-generated method stub
testSomeThread tt = new testSomeThread();
addJ myaddj = tt.new addJ();
minusJ myminusj = tt.new minusJ();
for (int m = 0; m < 2; m++) {
Thread t = new Thread(myaddj);
t.start();
t = new Thread(myminusj);
t.start();
}
}
private synchronized void addj() {
// TODO Auto-generated method stub
for (int k = 0; k < 10; k++) {
++j;
System.out.println("j++ --> now j is " + j);
}
}
private synchronized void minusj() {
// TODO Auto-generated method stub
for (int l = 0; l < 10; l++) {
--j;
System.out.println("j-- --> now j is " + j);
}
}
class addJ implements Runnable {
@Override
public void run() {
// TODO Auto-generated method stub
addj();
}
}
class minusJ implements Runnable {
@Override
public void run() {
// TODO Auto-generated method stub
minusj();
}
}
}
运行结果:
j++ --> now j is 11
j++ --> now j is 12
j++ --> now j is 13
j++ --> now j is 14
j++ --> now j is 15
j++ --> now j is 16
j++ --> now j is 17
j++ --> now j is 18
j++ --> now j is 19
j++ --> now j is 20
j-- --> now j is 19
j-- --> now j is 18
j-- --> now j is 17
j-- --> now j is 16
j-- --> now j is 15
j-- --> now j is 14
j-- --> now j is 13
j-- --> now j is 12
j-- --> now j is 11
j-- --> now j is 10
j++ --> now j is 11
j++ --> now j is 12
j++ --> now j is 13
j++ --> now j is 14
j++ --> now j is 15
j++ --> now j is 16
j++ --> now j is 17
j++ --> now j is 18
j++ --> now j is 19
j++ --> now j is 20
j-- --> now j is 19
j-- --> now j is 18
j-- --> now j is 17
j-- --> now j is 16
j-- --> now j is 15
j-- --> now j is 14
j-- --> now j is 13
j-- --> now j is 12
j-- --> now j is 11
j-- --> now j is 10
看看起来很合理。
分享到:
相关推荐
- 引用计数:每个对象都有一个引用计数器,当引用增加时计数器加一,当引用移除时计数器减一,当计数器为零时对象被认为是垃圾。 - 可达性分析:从根节点开始,沿着引用链遍历所有可达的对象,未被遍历到的对象被...
* prefork 模式:控制进程在最初建立―StartServers‖个子进程后,为了满足 MinSpareServers 设置的需要创建一个进程,等待一秒钟,继续创建两个,再等待一秒钟,继续创建四个……如此按指数级增加创建的进程数,...
ACID是mysql数据库的事务属性,包括原子性、一致性、隔离性和持久性四个方面。 * 原子性:一个事务必须视为一个不可分割的最小工作单元,整个事务里的操作要么全部执行成功,要么全部失败。 * 一致性:事务总是从一...
如果多个线程同时访问`HashMap`,并且至少一个线程修改了该映射,那么它必须保持外部同步。 3. **遍历**:`Hashtable`使用`Enumeration`接口进行遍历,而`HashMap`使用`Iterator`接口进行遍历。 4. **初始容量和增长...
RDB持久化是Redis默认使用的持久化功能,通过创建一个经过压缩的二进制文件,其中包含了服务器在各个数据库中存储的键值对数据等信息。Redis提供了多种创建RDB文件的方法,用户可以使用SAVE命令或者BGSAVE命令手动...
招聘流程一般分为笔试和面试两个阶段,部分企业提前批不设笔试环节。面试通常为两轮技术面加上一轮HR或总监的综合面。腾讯技术面试为三轮加一轮,阿里为四轮加一轮,而华为等企业为两轮加一轮。面试中的自我介绍环节...
八皇后问题是一个经典的回溯算法问题,它源于19世纪由数学家鲁道夫·路德维希·卡尔·莫里斯·莱昂哈德·欧拉提出,旨在在8×8的棋盘上放置8个皇后,使得任意两个皇后都无法在同一行、同一列或同一斜线上互相攻击。...