java中synchronized,线程同步
来源:互联网 发布:神经系统算法matlab 编辑:程序博客网 时间:2024/04/28 11:33
一、.线程同步
Java使用监控器(也称对象锁)实现同步。每个对象都有一个监控器,使用监控器可以保证一次允许一个线程执行对象的同步语句。即在对象的同步语句执行完毕之前,其他试图执行当前对象的同步语句的线程都将处于阻塞状态,只有线程在当前对象的同步语句执行完毕后,监控器才会释放对象,并让最高优先级的阻塞线程处理它的同步语句。
也可以这样理解对象锁,拨打公共信息服务台时,接话员可以被多个客户访问,但每次接话员只能服务一个客户。当其为某个客户服务时,其状态为"忙碌",其他客户只能等待。当接话员为当前的客户服务结束时,状态就变成“空闲”,可以为其他客户服务。
下述代码演示不使用同步机制可能出现的情况。
public class Nosys {/** * @param args * */public static void main(String[] args) {// TODO Auto-generated method stubShare share=new Share();Caller caller1=new Caller(share, "A");Caller caller2=new Caller(share, "B");Caller caller3=new Caller(share, "C");}}class Share{void print(String str){System.out.print("["+str);try{Thread.sleep(1000);}catch(InterruptedException e){}System.out.println("]");}}class Caller implements Runnable{String str;Share share;Thread thread;public Caller(Share share,String str){this.share=share;this.str=str;//实例化进程thread=new Thread(this);thread.start();}public void run() {// TODO Auto-generated method stubshare.print(str);}}可结果能为
在java中使用synchronized关键字来实现对象锁。有两种方式使用synchronized:
1.同步方法
使用synchronized来修饰需要同步的方法。调整上述代码,只需将synchronized加到print前即可
2.同步块
只需将实例的对象放入同步块中即可,即:
public void run() {// TODO Auto-generated method stub
synchronized(share){share.print(str);
}}
0 0
- java中synchronized,线程同步
- Java线程同步中关键字synchronized详述
- Java线程同步中关键字synchronized详述
- Java线程同步中关键字synchronized详述
- Java线程同步中关键字synchronized简述
- Java线程同步中关键字synchronized详述
- java 线程同步 synchronized
- java 线程同步 synchronized
- java synchronized 线程同步
- Java 线程同步 synchronized
- Java线程同步synchronized
- java线程同步-synchronized
- java线程同步:synchronized
- java synchronized线程同步
- JAVA 线程同步 synchronized
- java 线程synchronized 线程同步
- java线程同步之synchronized
- Java 线程同步(synchronized)
- 深拷贝与浅拷贝
- 查看oracle数据库表被锁及解锁
- Scala中的高阶函数
- 计算机技能简览Mark
- CXF的三种发布方式和客户端调用方法
- java中synchronized,线程同步
- db-wal-shm
- git之-linux git服务器搭建
- JAVA读取属性文件含中文字符
- JS事件:target与currentTarget区别
- Linux rpm命令
- Eclipse使用技巧
- Java当中的线程(一)
- C++基础