名人名言
昨日翻译
“Success is just a war of attrition. Sure, there’s an element of talent you should probably possess. But if you just stick around long enough, eventually something is going to happen.”
——Dax Shepard
“ “成功只是一场消耗战。当然,你应该拥有一些天赋。但是如果你坚持足够长的时间,最终会发生一些事情。”——达克斯·塞帕德
今日名言
“The opposite of love is not hate; it’s indifference.”
——Elie Wiesel
2019.04.28问题及解析
题目
public class Test {
public static void main(String[] args) {
Add add = new Add();
ThreadFun thread1 = new ThreadFun(add);
ThreadFun thread2 = new ThreadFun(add);
ThreadFun thread3 = new ThreadFun(add);
thread1.start();
thread2.start();
thread3.start();
}
}
class ThreadFun extends Thread{
private Add add;
ThreadFun(Add add){
this.add = add;
}
public void run(){
synchronized (add){
add.add();
}
}
}
class Add{
private int num1;
int num2;
void add(){
num1 += 3;
num2 += 3;
System.out.print(num1 + " " + num2);
}
}
请问结果为:
A.0 33 66 9
B.3 36 69 9
C.6 66 69 9
D.3 63 63 3
答案与解析
1.相关知识
继承Thread方法可以创建线程对象,重写run方法后,当调用start方法之后会运行重写后的run方法。
sychronized关键字可以使同一时间只能有一个线程对修饰的代码块进行访问,避免线程冲突的发生
2.代码流程
定义Test类,main方法
new了一个Add类的实例
new了ThreadFun的三个实例,将Add实例作为参数传递
分别调用三个实例的start方法
定义了一个ThreadFun类继承Thread类
私有Add成员变量
ThreadFun有参构造,参数为Add
将参数Add赋值给Add成员变量
重写Thread类的run方法,sychronized对add成员变量进行加锁
调用add成员的add()方法
定义了Add类
定义私有整型变量num1
定义整形变量num2
定义add方法
num1赋值num1+3
num2赋值num2+3
输出num1空格num2
3.答案解析
三个线程启动后任意一个线程有可能执行run方法,最终三个都会执行完。
由于sychronized修饰add实例,所以同一时间只有一个线程可以访问add实例
第一个线程调用add方法时
num1+3=3
num2+3=3
输出结果3空格3
第二个线程调用add方法时,由于线程构造指向同一个实例
因此num1、num2的值会保留
此时num1+3=6
num2+3=6
输出结果为3 36 6
第三个线程同理
输出结果为3 36 69 9
答案选:B
2019.04.29问题
public class Test {
private float f = 2.0f;
int i = 1;
static int j = 2;
public static void main(String[] args) {
Test test = new Test();
}
}
请问结果为:
请问下列哪些使用在main函数中是正确的?
A.test.f = 1.0;
B.System.out.println(this.j);
C.System.out.println(Test.i);
D.System.out.println(Test.j);
往期回顾
java练习本(19_04_16)|继承——访问修饰符、覆盖
java练习本(19_04_15)|lang包类——Math
java每日一练(19_04_11)|条件语句——switch
java每日一练(19_04_10)|异常—— try catch finally
java每日一练(19_04_09)|面向对象—— 继承、访问修饰符
java每日一练(19_04_08)|运算符、循环—— for、++自增
java每日一练(19_04_07)|基础数据类型、包装类—— double、float、int、Double
java每日一练(19_04_03)|HashMap、Hashtable
java每日一练(19_04_02)|instanceof关键字
加入我们吧~
眼过千遍,不如手过一遍,一定一定要把自己的想法写出来(想法不论对错,写你所想就是进步),这样才会有所收获,你的每一个留言和分享小刀都会认真回复,彼此学习共同进步~
小刀和小伙伴在学习群里
等你来一起监督学习哦,坚持!加油!
进群请加小刀微信: best396975802
。
END
微信群请点击公众号菜单进微信群
文字|天堂
排版|花音
你点的每个在看,我都认真当成了喜欢