java中多线程安全问题产生&解决方案——同步方法
2017-06-06 17:09
609 查看
使用同步方法解决
格式:修饰符
synchronized 返回值
方法名(){
}
package com.itheima_05;
/*
* 同步方法:使用关键字synchronized修饰的方法,一旦被一个线程访问,则整个方法全部锁住,其他线程则无法访问
*
* synchronized
* 注意:
* 非静态同步方法的锁对象是this
* 静态的同步方法的锁对象是当前类的字节码对象
*/
public class TicketThread implements Runnable {
static int tickets = 100;// 火车票数量
Object obj = new Object();
@Override
public void run() {
// 出售火车票
while (true) {
/*synchronized (obj) {
method();
}*/
//method();
method2();
}
}
private synchronized void method() {
if (tickets > 0) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + ":" + tickets--);
}
}
private static synchronized void method2() {
if (tickets > 0) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + ":" + tickets--);
}
}
}package com.itheima_05;
public class TicktetTest {
public static void main(String[] args) {
//创建线程对象
TicketThread tt = new TicketThread();
Thread t = new Thread(tt);
t.setName("窗口1");
Thread t2 = new Thread(tt);
t2.setName("窗口2");
Thread t3 = new Thread(tt);
t3.setName("窗口3");
//启动线程对象
t.start();
t2.start();
t3.start();
}
}
相关文章推荐
- java中多线程安全问题产生&解决方案——同步代码块
- Java笔记3 多线程<1>线程概述、多线程的创建、多线程的安全问题、静态同步函数的锁、死锁
- 【我的Java笔记】多线程安全问题 & 同步机制
- java学习日记(6)____多线程的安全问题与死锁的产生
- java 多线程学习之多生产者多消费者产生的线程安全问题分析与解决:Lock和Condition
- 多线程协作方法sleep、yield、wait、join和同步和安全等问题
- 如何实现多个线程同步 (2013-11-10 12:07:24)转载▼ 标签: it 在编写一个类时,如果该类中的代码可能运行于多线程环境下,那么就要考虑同步的问题,Java实现线程同步的方法很多
- 黑马程序员:Java基础——多线程之安全问题与同步
- java线程研究---(7)Thread同步:多线程数据共用会产生问题
- 多线程安全问题----同步方法
- java语言基础(91)——多线程(同步方法解决线程安全问题)
- Java多线程安全问题及解决方案
- java多线程的等待唤醒机制及如何解决同步过程中的安全问题
- JAVA多线程不安全问题解决方案(多线程并发同一资源)。
- Java多线程对耗时方法的同步问题
- java基础知识回顾之java Thread类学习(五)--java多线程安全问题(锁)同步的前提
- 【Java多线程对耗时方法的同步问题】
- [Java]Java多线程数据安全(同步线程的方法)
- 单例在多线程下的问题: "懒汉"初始化的线程安全
- Java Note: 多线程的同步(互斥锁)的方法对比,信号量锁,读写锁的实现,生产者-消费者模式的实现