色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術文章
文章詳情頁

Java synchronize線程安全測試

瀏覽:121日期:2022-09-02 18:31:22

線程的運行是與當前CPU的資源調度與時間片是有關系的,當一個線程中的執行到某一部分方法的時候輪到另外一個線程來執行相應的代碼,所以還沒有等到第一個線程執行完那么CPU有切換到另外一個線程來運行其相應的代碼,所以這個時候假如操作公共的數據部分就會出現錯誤

為了解決這個問題,可以使用 synchronized 同步代碼塊來對公共部分進行同步操作

在用synchronize關鍵字修飾同步代碼塊時,運行代碼發現不能交替賣票。 以下是初始代碼

package com.itheima.Test;public class Test1a { public static void main(String[] args) { Ticket1a t1=new Ticket1a(); new Thread(t1,'A').start(); new Thread(t1,'B').start(); new Thread(t1,'C').start(); }}class Ticket1a implements Runnable{ int ticket=100; @Override public void run() { synchronized (Ticket1a.class) { while (true) { if (ticket<=0) {break; } try {Thread.sleep(20); } catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace(); }System.out.println(Thread.currentThread().getName()+' sold '+(ticket--)); } } }}

運行結果:

A sold 100A sold 99A sold 98A sold 97A sold 96A sold 95A sold 94A sold 93A sold 92A sold 91...A sold 10A sold 9A sold 8A sold 7A sold 6A sold 5A sold 4A sold 3A sold 2A sold 1

雖然解決了線程的安全問題,但是不能實現三個窗口交替賣票。后來仔細一看,是synchronize關鍵字修飾的代碼塊位置不對,相當于修飾了同步方法。

更改后:

@Override public void run() { while (true) {synchronized (Ticket1a.class) { if (ticket<=0) {break; } try {Thread.sleep(20); } catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace(); }System.out.println(Thread.currentThread().getName()+' sold '+(ticket--)); } } }

這樣就完成了線程安全的小測試。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Java
相關文章:
主站蜘蛛池模板: 免费在线观看一级毛片 | 亚洲精品国产精品国自产 | 精品久久久久久综合网 | 久久久久久免费一区二区三区 | 欧美精品综合一区二区三区 | www.黄.com| 视频在线一区二区 | 精品日本一区二区三区在线观看 | 久久精品综合国产二区 | 国产精品成人观看视频网站 | 国产成人精品在线 | 欧美日韩综合高清一区二区 | 成人久久18免费网站 | 免费观看一级特黄三大片视频 | 美女扒开腿让男人桶爽免费动态图 | 日本在线观看www免费 | 日本aaa毛片| 久久精品中文字幕首页 | 91情侣高清精品国产 | 亚洲成在线观看 | 亚洲无卡视频 | 韩国美女一级毛片 | 欧美一区二区日韩一区二区 | 亚洲黄色成人 | 韩国视频一区 | 欧美一级高清片 | 18年大片免费在线观看 | 午夜香港三级a三级三点 | 欧美大片a一级毛片视频 | 在线观看亚洲网站 | 久久精品综合国产二区 | 怡红院免费在线视频 | 免费观看成为人视频 | 亚洲精品欧美精品国产精品 | 性色tv| 国产免费高清在线精品一区 | 黄黄的网站在线观看 | 久久黄色一级视频 | 国产成人精品视频免费大全 | 成人国产片免费 | 加勒比综合网 |