多线程互斥synchronized
2018-01-15 20:44
239 查看
今天再次加深了对线程互斥的理解,整理代码,方便以后查看。
public class ThreadSynchronized { public static void main(String[] args) { //静态方法不能调用内部类,静态方法是不用创建对象就可以访问的, //所以在使用静态方法的时候,可能获取不到内部类的信息,导致不能创建内部类对象 //可将该类设置为static解决 Tree t = new Tree(); new Thread(new Runnable() { @Override public void run() { while(true){ t.show(); // t.show2(); } } }).start(); new Thread(){ public void run() { while(true){ // t.show(); // t.show2(); t.show3(); } }; }.start(); } static class Tree { String flag = ""; public void show(){ //第一种形式,修饰代码块 synchronized(flag){ for(int i = 0; i < 10; i++){ System.out.print(i+"-"); } System.out.println(); } } //第二种形式,修饰方法,这种默认是以this为 “锁” 的 // 一个线程调用show,一个线程调用show2,是不会互斥的,毕竟锁是不同的 // 要想两个实现互斥,可以将第一种形式的flag,换为this public synchronized void show2(){ for(int i = 0; i < 10; i++){ System.out.print(i+"-"); } System.out.println(); } // 注意这个 静态的synchronized,不是以当前对象的this为 “锁”, 而是以当前 类 为锁。 // 一个线程调用show,一个线程盗用show3,也是不会互斥的 // 可以将第一种的flag,换为 类名.class 起到互斥的效果。 public static synchronized void show3(){ for(int i = 0; i < 10; i++){ System.out.print(i+"-"); } System.out.println(); } } }
相关文章推荐
- 多线程——线程同步互斥(synchronized)
- 多线程互斥,用到Synchronized
- 2.使用synchronized关键字实现多线程的同步和互斥(不同线程同时读写同一数据)
- java并发-多线程之传统线程之互斥技术(Synchronized)(3)
- 【多线程】线程互斥之synchronized 详解
- 多线程——线程同步互斥(synchronized)
- Windows下多线程数据同步互斥的有关知识
- 孙鑫vc++ 15 (1)多线程与命名互斥
- Linux多进程多线程互斥同步例子
- OpenSSL多线程互斥的解决方案--一种新的锁
- java 多线程系列基础篇(四)之 synchronized关键字
- java多线程synchronized的应用
- Java多线程间的同步互斥
- Java 线程锁机制 -Synchronized Lock 互斥锁 读写锁
- linux多进程多线程互斥同步例子
- JAVA多线程之Synchronized关键字
- Linux下面线程的操作、多线程的同步和互斥
- 互斥机制synchronized学习
- 记录Java多线程的同步问题---synchronized关键字的使用
- Java之多线程内存可见性_2(synchronized实现可见性代码)