1. สาเหตุของปัญหาความปลอดภัยของด้าย
ปัญหาด้านความปลอดภัยของเธรดเกิดจากตัวแปรทั่วโลกและตัวแปรคงที่
2. ปัญหาด้านความปลอดภัยของด้าย
SimpledateFormate SDF = new SimpledateFormat (); ใช้ sdf.parse (Datestr); sdf.format (วันที่); มีการอ้างอิงถึงวัตถุ Caleadar ใน SDF.Parse (Datestr); ในซอร์สโค้ด Calendar.Clear (); และ Calendar.getTime (); // รับเวลาปฏิทิน
หากเธรดการโทร sdf.parse () และยังไม่ได้ดำเนินการปฏิทิน. getTime () หลังจากปฏิทิน. clear (), เธรด b เรียก sdf.parse () อีกครั้งจากนั้นเธรด B ยังดำเนินการวิธี sdf.clear () ซึ่งทำให้ข้อมูลปฏิทินของเธรด A ถูกล้างออก;
ThreadLocal ใช้พื้นที่ว่างเพื่อแลกเปลี่ยนเวลาที่ซิงโครไนซ์ใช้เวลาในการแลกเปลี่ยนพื้นที่
ใช้ Threadlocal เพื่อแก้ปัญหาความปลอดภัยของด้าย:
คลาสสาธารณะ ThreadLocaldateUtil {สตริงคงสุดท้ายคงที่วันที่ _format = "yyyy-mm-dd hh: mm: ss"; private static threadlocal <ateformat> threadlocal = new ThreadLocal <DateFormat> (); Public Static DateFormat getDateFormat () {dateFormat df = threadlocal.get (); if (df == null) {df = new SimpledateFormat (date_format); threadlocal.set (df); } return df; } String String Public String FormatDate (วันที่วันที่) พ่น ParseException {return getDateFormat (). รูปแบบ (วันที่); } Public Static Date Parse (String strdate) พ่น parsexception {return getDateFormat (). parse (strdate); -ใช้วิธีการซิงโครไนซ์:
ชั้นเรียนสาธารณะ Datesyncutil {ส่วนตัวคงที่ simpledateFormat SDF = ใหม่ SimpledateFormat ("yyyy-mm-dd hh: mm: ss"); ฟอร์แมตสตริงสาธารณะคงที่ (วันที่วันที่) พ่น ParseException {ซิงโครไนซ์ (SDF) {return sdf.format (วันที่); }} วันที่สาธารณะที่แยกวิเคราะห์ (String strdate) พ่น parseexception {ซิงโครไนซ์ (SDF) {return sdf.parse (strdate); -ขอบคุณสำหรับการอ่านบทความนี้ฉันหวังว่ามันจะช่วยคุณได้ ขอบคุณสำหรับการสนับสนุนเว็บไซต์นี้!