java语言基础(91)——多线程(同步方法解决线程安全问题)
2017-09-19 00:25
615 查看
同步方法解决线程安全问题:
package ThreadDemo;
public class SellTicket implements Runnable{
private int ticket = 100;
public synchronized void run(){
while(true){
if(ticket>0){
try {
Thread.sleep(100);//模拟网络延时
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()
+"正在出售第"+ ticket-- +"张票");
}else{
break;
}
}
}
}
注意事项:
经试验表名,同步方法的锁对象是this,静态同步方法的锁对象是 类名.class 字节码对象,所以要用同步方法实现线程安全,只适用于Runnable的方式,若是Thread子类的方式,具体使用时会new多个对象,这样的话它们的锁对象就不一致了。
package ThreadDemo;
public class SellTicket implements Runnable{
private int ticket = 100;
public synchronized void run(){
while(true){
if(ticket>0){
try {
Thread.sleep(100);//模拟网络延时
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()
+"正在出售第"+ ticket-- +"张票");
}else{
break;
}
}
}
}
注意事项:
经试验表名,同步方法的锁对象是this,静态同步方法的锁对象是 类名.class 字节码对象,所以要用同步方法实现线程安全,只适用于Runnable的方式,若是Thread子类的方式,具体使用时会new多个对象,这样的话它们的锁对象就不一致了。
相关文章推荐
- java语言基础(90)——多线程(同步代码块解决多线程售电影票时的负票问题)
- 黑马程序员:Java基础——多线程之安全问题与同步
- java基础问题---多线程有几种实现方法
- Java基础-23总结多线程,线程实现Runnable接口,线程名字获取和设置,线程控制,线程安全,同步线程
- Java使用同步解决线程安全问题的弊端
- 23 API-多线程(多线程概述,多线程实现方案,线程控制常见方法,线程安全问题及解决)
- java基础问题---java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用
- 在iOS中有几种方法来解决多线程访问同一个内存地址的互斥同步问题
- java多线程解决同步问题的几种方式、原理和代码
- Java_基础—多线程(同步代码块和同步方法)
- java中多线程安全问题产生&解决方案——同步方法
- Java小程序---接口中抽象方法的实现(解决了JAVA语言不能多继承的问题)
- JAVA基础知识之java多线程时数据同步问题
- 如何实现多个线程同步 (2013-11-10 12:07:24)转载▼ 标签: it 在编写一个类时,如果该类中的代码可能运行于多线程环境下,那么就要考虑同步的问题,Java实现线程同步的方法很多
- Java多线程基础(并发、线程安全、同步、互斥)
- java多线程的等待唤醒机制及如何解决同步过程中的安全问题
- Java多线程对耗时方法的同步问题
- Java线程同步卖票问题解决方法
- Java线程安全问题及线程安全解决方法
- 【Java多线程对耗时方法的同步问题】