java27.线程------同步与死锁
来源:互联网 发布:施工进度编制软件 编辑:程序博客网 时间:2024/05/29 14:25
1.同步代码块
格式:
synchronized(同步对象){
需要同步的代码块;
}
示例:
class MyThreadDemo implements Runnable { private int ticket = 5;// 五张票 public void run() { for (int i = 0; i < 10; i++) { // 解决资源共享就需要同步 synchronized (this) { if (ticket > 0) { try { Thread.sleep(500); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("车窗:" + Thread.currentThread().getName() + " 出车票:" + ticket--); } } } }}public class ThreadDemo05 { public static void main(String[] args) { MyThreadDemo m = new MyThreadDemo(); // 三个购票窗口 Thread t1 = new Thread(m); Thread t2 = new Thread(m); Thread t3 = new Thread(m); t1.start(); t2.start(); t3.start(); }}
运行结果:
2.同步方法
格式:
synchronized void 方法名称(){}
示例:
class MyThreadDemo implements Runnable { private String name; private int ticket = 5;// 五张票 public void run() { for (int i = 0; i < 10; i++) { tell(); } } // 同步方法 public synchronized void tell() { if (ticket > 0) { try { Thread.sleep(500); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("车窗:" + Thread.currentThread().getName() + " 出车票:" + ticket--); } }}public class ThreadDemo05 { public static void main(String[] args) { MyThreadDemo m = new MyThreadDemo(); // 三个购票窗口 Thread t1 = new Thread(m); Thread t2 = new Thread(m); Thread t3 = new Thread(m); t1.start(); t2.start(); t3.start(); }}
结果:
3.死锁:
是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。
1 0
- java27.线程------同步与死锁
- 线程同步与死锁
- 线程同步与死锁
- 线程同步与死锁
- 线程--同步与死锁
- JAVA线程同步与死锁
- 线程的同步与死锁
- 线程同步对象的应用与死锁
- Java线程同步与死锁认识
- Java线程的同步与死锁
- Java 线程同步与死锁 学习笔记
- 程序、进程、线程、同步与死锁
- Java多线程 线程同步与死锁
- 线程——同步与死锁
- Java线程的同步与死锁
- 线程的同步与死锁及解决办法
- 线程同步 线程死锁
- 线程同步/线程死锁
- Java web开发(4)
- PythonTutorial-01 一些基础知识
- 判断网络状态
- switch使用总结
- c++ 与C#比较
- java27.线程------同步与死锁
- 与古鲁打交道的礼节和教养(部分摘自图书-程序员修炼之道)
- SQL报错error:索引中丢失IN或OUT参数
- Linux下MySql服务器启动以及数据库登陆的几个常见问题
- Android Intent Action 大全
- Ipython简介(二)
- Index vs. Type
- ubuntu开启SSH服务
- 统计硬币