Java线程同步实例
来源:互联网 发布:socket java面试题 编辑:程序博客网 时间:2024/06/06 16:36
Java线程同步实例
package lab8.wu;public class mythread {public static void main(String[] args) {new Create("thread1");new Create("thread2");}}class Create implements Runnable {static int a = 10;private Thread t;public Create(String name) {t = new Thread(this);t.setName(name);t.start();}public void run() {System.out.println("进入同步前"+t.getName()+" "+a);synchronized (this) {Thread t = Thread.currentThread();for (int i = 0; i < 3; i++) {a++;System.out.println(t.getName() + " " + i+" a="+a);try {Thread.sleep(1000);} catch (InterruptedException e) {}}}}}
运行结果,thread1和thread2是乱序的,synchronized并未起到作用,synchronized锁住的是两个对象,彼此之间不造成影响:
对比代码:
package lab8.wu;public class mythread2 {public static void main(String[] args) {Create2 create2=new Create2("th");Thread th1=new Thread(create2,"thread1");Thread th2=new Thread(create2,"thread2");th1.start();th2.start();}}class Create2 implements Runnable {static int a = 10;private Thread t;public Create2(String name) {t = new Thread(this);t.setName(name);t.start();}public void run() {Thread t = Thread.currentThread();System.out.println("进入同步前"+t.getName()+" "+a);synchronized (this) {for (int i = 0; i < 3; i++) {a++;System.out.println(t.getName() + " " + i+" a="+a);try {Thread.sleep(1000);} catch (InterruptedException e) {}}}}}
运行结果,synchronized起到作用,在synchronized中的代码同一时间不能被不同的线程同时进入:
0 0
- java 线程同步实例
- java线程同步实例
- Java线程同步实例
- 线程同步实例
- 线程同步实例
- VC 线程同步实例
- 线程同步问题实例
- java基础之线程同步实例之Producer与Consumer
- Java多线程之线程安全与同步实例
- Java线程同步实例 生产者 消费者问题分析
- Java多线程通信、同步卖票实例--线程安全、详细注释
- 线程 线程池 线程同步 实例
- JAVA线程-JAVA同步
- Linux C 线程同步实例
- Servlet线程同步实例研究
- 线程同步方法及实例
- 同步线程的一个实例
- Java线程:线程的同步-同步方法
- 西部世界
- redis源码分析 -- 内存管理
- 操作系统实验(1):定时中断处理
- leetcode:Find All Anagrams in a String 滑动窗口方法总结
- 【css】路径data:image/png;base64的用法详解
- Java线程同步实例
- Intel 8086 汇编指令手册
- GDI+环境初始化
- Criteria的用法
- 带权并查集
- 析构函数
- vn.py安装错误解决办法
- 软件开发模式类型
- 【hdu3415】【单调队列 】Max Sum of Max-K-sub-sequence【求长度不大于k的区间最大子串和】