线程学习之--8线程同步
来源:互联网 发布:oc高级编程pdf 下载 编辑:程序博客网 时间:2024/05/16 10:10
怎样解决线程的安全问题:
解决思路:
将多条线程操作的共享数据线程代码封装起来,当有线程在执行这些代码的时候,
其他的线程是不可以参与这个运算的,必须要等到当前的线程把这些代码都执行完毕后,
其他的线程才可参与运算。
在java中,是使用同步代码块的方式来解决这个问题的。
同步代码块的格式是:
synchronized(对象)
{
需要被同步的代码;
}
同步的好处:解决了线程的安全问题。
同步的弊端:相对来说,降低了运行的效率,因为同步以外的线程都会来判断同步锁。
小demo:(解决线程问题)
package com;
/**
* 需求:买票系统。一共有一百张火车票,同时有四个窗口卖着100张票。使用多线程的技术(也可以使用static方法)。
* @author 勇
*
*/
class Piao implements Runnable{//火车票类
private int num = 100;//定义一百张票
public void run() {
while(true){
synchronized (this) {
if(num>0){
try{Thread.sleep(10);}catch(Exception e) {e.printStackTrace();}
System.out.println(Thread.currentThread().getName()+">>"+ num--);
}
}
}
}
}
public class Ticket {
public static void main(String[] args) {
Piao p=new Piao();
Thread t1=new Thread(p);
Thread t2=new Thread(p);
Thread t3=new Thread(p);
Thread t4=new Thread(p);
t1.start();
t2.start();
t3.start();
t4.start();
}
}
解决思路:
将多条线程操作的共享数据线程代码封装起来,当有线程在执行这些代码的时候,
其他的线程是不可以参与这个运算的,必须要等到当前的线程把这些代码都执行完毕后,
其他的线程才可参与运算。
在java中,是使用同步代码块的方式来解决这个问题的。
同步代码块的格式是:
synchronized(对象)
{
需要被同步的代码;
}
同步的好处:解决了线程的安全问题。
同步的弊端:相对来说,降低了运行的效率,因为同步以外的线程都会来判断同步锁。
小demo:(解决线程问题)
package com;
/**
* 需求:买票系统。一共有一百张火车票,同时有四个窗口卖着100张票。使用多线程的技术(也可以使用static方法)。
* @author 勇
*
*/
class Piao implements Runnable{//火车票类
private int num = 100;//定义一百张票
public void run() {
while(true){
synchronized (this) {
if(num>0){
try{Thread.sleep(10);}catch(Exception e) {e.printStackTrace();}
System.out.println(Thread.currentThread().getName()+">>"+ num--);
}
}
}
}
}
public class Ticket {
public static void main(String[] args) {
Piao p=new Piao();
Thread t1=new Thread(p);
Thread t2=new Thread(p);
Thread t3=new Thread(p);
Thread t4=new Thread(p);
t1.start();
t2.start();
t3.start();
t4.start();
}
}
- 线程学习之--8线程同步
- Java线程学习笔记之线程同步
- 学习笔记之线程同步
- 线程之线程同步
- Java线程之线程同步
- Java线程之线程同步
- java线程之线程同步
- Java线程之线程同步
- Java学习之线程同步(Synchronization)
- java 多线程学习笔记之 线程同步
- 学习笔记之线程同步的函数
- JAVA学习之路--线程同步
- Android学习:线程同步之synchronized
- 【Java并发学习】之线程的同步
- IOS多线程系统学习之线程同步与线程通信
- 线程同步之死锁
- POSIX线程之同步
- 线程同步之semaphore
- 线程学习之--6案例:售票demo
- python 使用pymssql连接sql server数据库
- 在UI中显示Bitmap
- Android_博主最新XL系列软件发布
- 线程学习之--7线程的安全问题
- 线程学习之--8线程同步
- 2012-11-26 - 11-27 11gR2 "Backup and Recovery User's Guide" page 443 - 484
- linux中的文件描述符和open()
- 开源.net 论坛 discuz nt使用心得
- Scalable System Design Patterns
- 照片存入oracle数据库以及从oracle数据库读取
- 原生 JavaScript 和 jQuery 的优缺点
- virtualbox 虚拟机 ubuntu中下添加硬盘实录
- 高数总结