Java线程的同步与死锁
来源:互联网 发布:php获取数组元素个数 编辑:程序博客网 时间:2024/06/08 02:11
一、线程同步
同步就是指多个操作在同一个时间段只能有一个线程进行,其他线程要等待此线程完成之后才可以继续进行
在java中synchronized关键字可以通过两种方式实现同步:
*同步代码块(在java中有四种代码块:普通代码块、构造块、静态块、同步块)
*同步方法
1、使用同步代码块要传入一个锁定的对象,一般即当前对象this
public class MyThread implements Runnable { private int ticket = 10; @Override public void run() { for (int t = 0; t < 20; t++) { synchronized (this) {//当前操作每一次只允许一个对象进入 if (this.ticket > 0) { try { Thread.sleep(100); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println(Thread.currentThread().getName() + this.ticket--); } } } }}
2、同步方法:尽量使用同步方法
public class MyThread implements Runnable { private int ticket = 10; @Override public void run() { for (int t = 0; t < 20; t++) { sale();//调用同步方法 } } public synchronized void sale() { if (this.ticket > 0) { try { Thread.sleep(100); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println(Thread.currentThread().getName() + this.ticket--); } }}
同步操作与异步操作相比,异步操作速度比较快,但是同步操作是线性安全的操作
尽量使用同步方法而非同步代码块
二、线程死锁
线程同步过多就有可能造成死锁
0 0
- Java线程的同步与死锁
- Java线程的同步与死锁
- JAVA线程同步与死锁
- 线程的同步与死锁
- Java复习之线程的同步与死锁
- Java 线程的同步(synchronized)与死锁
- Java线程同步与死锁认识
- Java 线程同步与死锁 学习笔记
- Java多线程 线程同步与死锁
- 线程同步与死锁
- 线程同步与死锁
- 线程同步与死锁
- 线程--同步与死锁
- 线程同步对象的应用与死锁
- 线程的同步与死锁及解决办法
- java中线程同步(线程安全)与死锁问题
- java 同步与死锁
- java27.线程------同步与死锁
- 关于异或(XOR)的有趣应用
- tjut 1251
- if语句
- 控件内容遇到导航条出现偏移的情况
- 第3课 Go控制,循环,选择,跳转语句
- Java线程的同步与死锁
- str()和repr()(及''操作符)以及python对json的简单操作
- ios第一天学习
- Nginx+Tomcat负载均衡配置
- POJ 2385 Apple Catching(DP)
- 那些年Dialog踩过的坑
- 快速批量提取文件夹中次级文件夹及文件名称的技巧
- 算法先锋队
- 【杭电oj4907】Task schedule