案头见蠹鱼,犹胜凡俦侣。这篇文章主要讲述Android-Java-synchronized静态方法&
字节码文件对象相关的知识,希望能为你提供帮助。
上一篇博客
Android-Java-同步方法-synchronized,中讲解了普通方法加入synchronized修饰符,此synchronized的同步锁是this,还介绍方法的封装性,这篇博客就不讲方法的封装性了
先看一个 静态方法加入修饰符synchronized(案例)
package android.java.thread12; /** * 售票业务 */ class Booking {/** * 模拟票的总算 10张票 */ private static int ticket = 10; /** * 加入了同步修饰符的方法synchronized, * 不管CPU如何疯狂的切换执行, * 只要同步方法里面的代码没有执行完, * 就不准其他线程进来执行 * 这样就保证了多线程操作共享数据的安全性 */ public static synchronized void actionTicket() { // synchronized同步操作共享数据的代码// synchronized (BookingRunnable.class) {if (ticket > 0) {// 让线程在这里停一下,会更加容易复现线程的安全问题,就算不加这行代码,安全问题依然有 try { Thread.sleep(200); } catch (InterruptedException e) { e.printStackTrace(); }System.out.println("名称:" + Thread.currentThread().getName() + "窗口卖出第" + ticket + "张票"); ticket--; } // } } }/** * 售票任务 */ class BookingRunnable implements Runnable {@Override public void run() {while (true) { Booking.actionTicket(); } } }/** * 售票案例 */ public class BookingTest {public static void main(String[] args) {/** * 定义Runnable实现类Booking,此实现类Booking不是线程,此实现类Booking给四个Thread去执行的 */ Runnable booking = new BookingRunnable(); // 实例化线程对象 Thread thread1 = new Thread(booking); // 此实现类Booking给Thread去执行的 Thread thread2 = new Thread(booking); // 此实现类Booking给Thread去执行的 Thread thread3 = new Thread(booking); // 此实现类Booking给Thread去执行的 Thread thread4 = new Thread(booking); // 此实现类Booking给Thread去执行的// 开启启动线程 thread1.start(); // 启动第Thread-0窗口 执行卖票任务 thread2.start(); // 启动第Thread-1窗口 执行卖票任务 thread3.start(); // 启动第Thread-2窗口 执行卖票任务 thread4.start(); // 启动第Thread-3窗口 执行卖票任务}}
执行结果:
文章图片
【Android-Java-synchronized静态方法& 字节码文件对象】
静态方法加入synchronized修饰符后,同步静态方法的
推荐阅读
- delphi android 录像(使用了JMediaRecorder,MediaRecorder的使用方法)
- Java代码启动Appium server
- 理解Android虚拟机体系结构
- Android数据库内容变化的监听
- Android 简单的语音播报
- Android8.0通知
- Android动态自动匹配输入框
- 安卓手机传递文件到Windows系统电脑
- Cordova????????????App?????? - ??????