java 线程安全 线程同步 线程同步机制
2017-03-29 22:25
309 查看
第一种:普通的情况演示
线程同步方式1:同步块
线程同步方式2:同步方法
package com.js; // 线程安全问题来源于两个线程同时存取单一对象的数据 public class Java_4_Thread_SafeTest implements Runnable { int num = 10; public void run(){ while(true){ if(num > 0){ try{ Thread.sleep(100); }catch(Exception e){ e.printStackTrace(); } System.out.println("tickets"+num--); } } } public static void main(String[] args) { // TODO 自动生成的方法存根 Java_4_Thread_SafeTest t = new Java_4_Thread_SafeTest();// 实例化类对象 Thread tA = new Thread(t); Thread tC = new Thread(t); Thread tD = new Thread(t); Thread tB = new Thread(t); tA.start(); tB.start(); tC.start(); tD.start(); } }
线程同步方式1:同步块
package com.js; public class Java_4_Thread_SafeTestSynchronizedBlock implements Runnable { int num = 10; public void run(){ while(true){ synchronized(""){ if(num > 0){ try{ Thread.sleep(100); }catch(Exception e){ e.printStackTrace(); } System.out.println("tickets"+num--); } } } } public static void main(String[] args) { // TODO 自动生成的方法存根 Java_4_Thread_SafeTestSynchronizedBlock t = new Java_4_Thread_SafeTestSynchronizedBlock();// 实例化类对象 Thread tA = new Thread(t); Thread tC = new Thread(t); Thread tD = new Thread(t); Thread tB = new Thread(t); tA.start(); tB.start(); tC.start(); tD.start(); } }
线程同步方式2:同步方法
package com.js; public class Java_4_Thread_SafeTestSynchronizedMethod implements Runnable { int num = 10; public synchronized void doit(){ if(num > 0){ try{ Thread.sleep(100); }catch(Exception e){ e.printStackTrace(); } System.out.println("tickets"+num--); } } public void run(){ while(true){ doit(); } } public static void main(String[] args) { // TODO 自动生成的方法存根 Java_4_Thread_SafeTestSynchronizedMethod t = new Java_4_Thread_SafeTestSynchronizedMethod();// 实例化类对象 Thread tA = new Thread(t); Thread tC = new Thread(t); Thread tD = new Thread(t); Thread tB = new Thread(t); tA.start(); tB.start(); tC.start(); tD.start(); } }
相关文章推荐
- Java synchronized的理解!(线程安全,线程同步)
- 阿里面经之解答 by cmershen(3)——String/StringBuffer/StringBuilder,Java序列化,线程安全,线程同步,ThreadLocal
- Java--线程--线程控制,线程安全,线程同步,线程等待,线程交互,死锁,互斥锁,读写锁
- java并发编程:线程安全-线程同步-synchronized和lock
- java-多线程 | 线程安全和线程同步
- Java处理线程同步/线程安全的方式概述
- Java--线程--线程控制,线程安全,线程同步,线程等待,线程交互,死锁,互斥锁,读写锁
- java中线程同步(线程安全)与死锁问题
- Java多线程(二) —— 线程安全、线程同步、线程间通信(含面试题集)
- Java并发——线程安全、线程同步、线程通信
- String/StringBuffer/StringBuilder,Java序列化,线程安全,线程同步,ThreadLocal
- Java 小例子:线程同步例子:三个学生取水
- 如何使用java synchronized进行线程同步
- JAVA 线程安全 秘笈
- java的线程同步
- 线程安全的Singleton模式的Java实现
- 关于JAVA中线程同步的性能测试
- 对java中File.mkdirs方法线程安全问题的一点探讨
- Java:什么是线程安全
- 范例解说Java里的线程概念与线程同步技术