这两个线程方式有什么区别高手帮忙
package icrement;public class Counter { protected long value = 0; public long getValue() {
return value;
}
public long increase(){
synchronized (this) {
this.value += 10;
return value;
}
}
}
package icrement;public class Thread1 extends Thread{
private volatile Counter counter ;
public Thread1(Counter counter){
this.counter = counter;
}
@Override
public void run(){
//synchronized (counter) {
//System.out.println(counter.value+=10);
//}
System.out.println(this.counter.increase());
}
}
还有一个
package icrement;public class Counter { protected long value = 0; public long getValue() {
return value;
}
public long increase(){
//synchronized (this) {
this.value += 10;
return value;
//}
}
}package icrement;public class Thread1 extends Thread{
private volatile Counter counter ;
public Thread1(Counter counter){
this.counter = counter;
}
@Override
public void run(){
synchronized (counter) {
//System.out.println(counter.value+=10);
System.out.println(this.counter.increase());
}
}
}
就是把线程同步块放到run里面和不放到里面的区别
package icrement;public class Counter { protected long value = 0; public long getValue() {
return value;
}
public long increase(){
synchronized (this) {
this.value += 10;
return value;
}
}
}
package icrement;public class Thread1 extends Thread{
private volatile Counter counter ;
public Thread1(Counter counter){
this.counter = counter;
}
@Override
public void run(){
//synchronized (counter) {
//System.out.println(counter.value+=10);
//}
System.out.println(this.counter.increase());
}
}
还有一个
package icrement;public class Counter { protected long value = 0; public long getValue() {
return value;
}
public long increase(){
//synchronized (this) {
this.value += 10;
return value;
//}
}
}package icrement;public class Thread1 extends Thread{
private volatile Counter counter ;
public Thread1(Counter counter){
this.counter = counter;
}
@Override
public void run(){
synchronized (counter) {
//System.out.println(counter.value+=10);
System.out.println(this.counter.increase());
}
}
}
就是把线程同步块放到run里面和不放到里面的区别
解决方案 »
- 求解决客户端写出的字符串为什么不能在服务器端控制台显示。
- 请教下这个为什么会报java.io.EOFException,谢谢
- 国信蓝点 ,关于控制台格式化输出的一道java题,
- JSTL和<%%>的效率比较
- 在本地机子上可以运行java3D的APPLET,但是放到服务器上后,在客户端浏览器就不能运行,WHY?(解决高分赠送)
- 操作zip压缩文件时,要想加减修改其中的zipEntry内容,不改变整个大压缩文件有没有办法?
- 调查加请教:J2EE软件工程师应具备的核心技术能力
- ArrayList排序的问题
- 6月30号晚上,IBM西南区软件大赛决赛,猫腻得真是可以的啦。
- Applet 为什么不能在IE中显示,加分!!!!
- 高手给我看看是哪配置错了?????
- C++字节流转java字符流问题
第一个更好,因为它遵循了尽量减少锁定对象时间的原则。
第二个要一直等到println()结束才会释放锁,而第一个加法执行完就释放锁了