本文详细介绍java中线程概念描述
t1,
t2是同一个对象(r)的两个线程,当其中的一个线程(例如:t1)开始执行run()方法时,由于run()受synchronized保护,所以同一个对象的其他线程(
t2)无法访问synchronized方法(run方法)。只有当t1执行完后t2才有机会执行。
示例4:
publicclassThreadTestimplementsRunnable{
publicvoidrun(){
synchronized(this){
for(inti=0;i<10;i++){
System.out.print(""+i);
}
}
}
publicstaticvoidmain(String[]args){
Runnabler=newThreadTest();
Threadt1=newThread(r);
Threadt2=newThread(r);
t1.start();
t2.start();
}
}
这个程序与示例3的运行结果一样。在可能的情况下,应该把保护范围缩到最小,可以用示例4的形式,this代表"这个对象"。没有必要把整个run()保护起来,
run()中的代码只有一个for循环,所以只要保护for循环就可以了。
示例5:
publicclassThreadTestimplementsRunnable{
publicvoidrun(){
for(intk=0;k<5;k++){
System.out.println(Thread.currentThread().getName()
+":forloop:"+k);
}
synchronized(this){
for(intk=0;k<5;k++){
System.out.println(Thread.currentThread().getName()
+":synchronizedforloop:"+k);
}
}
}
publicstaticvoidmain(String[]args){
Runnabler=newThreadTest();
Threadt1=newThread(r,"t1_name");
Threadt2=newThread(r,"t2_name");
t1.start();
t2.start();
}
}
责编:豆豆技术应用
- Java新闻
- Java入门教程
- Java开发工具
- J2EE
- J2SE
- J2ME
- EJB/Spring
- Applet/Swing
- Servlet/JSP
- Struts/Hibernate
- JDBC/JDO
- Ajax
- 认证考试
- JAVA对象比较器Comparator
- Java 6 RowSet 使用完全剖析
- 深入了解"Java"中的“异常机制”
- 讨论5种跟踪Java执行的方法
- Java专业术语标准化规范
- java中线程概念描述
- JAVA中的反射机制详解
- Java语言灵巧指针与垃圾回收
- 讲述java语言中内部类的研究
- Java对于Cookie的操作详解