欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java定時(shí)器Timer簡(jiǎn)述

 更新時(shí)間:2017年01月12日 15:04:28   作者:VectorYao  
本文主要介紹了Java定時(shí)器Timer的相關(guān)知識(shí),具有一定的參考價(jià)值,下面跟著小編一起來(lái)看下吧

概述

主要用于Java線程里指定時(shí)間或周期運(yùn)行任務(wù)。Timer是線程安全的,但不提供實(shí)時(shí)性(real-time)保證。

構(gòu)造函數(shù)

Timer()

默認(rèn)構(gòu)造函數(shù)。

Timer(boolean)

指定關(guān)聯(lián)線程是否作為daemon線程。

Timer(String)

指定關(guān)聯(lián)線程的名稱。

Timer(String, boolean)

同時(shí)指定關(guān)聯(lián)線程的名稱和是否作為daemon。

schdule方法

schedule(TimerTask task, long delay)

以當(dāng)前時(shí)間為基準(zhǔn),延遲指定的毫秒后執(zhí)行一次TimerTask任務(wù)。

schedule(TimerTask task, Date time)

在指定的日期執(zhí)行一次TimerTask任務(wù)。

如果日期time早于當(dāng)前時(shí)間,則立刻執(zhí)行。

使用示例

public class Demo {
 private static Timer timer = new Timer();
 public static class MyTask extends TimerTask {
 @Override
 public void run() {
  System.out.println("Run Time:" + new Date().toString());
 }
 }
 public static void main(String[] args) {
 try {
  MyTask task = new MyTask();
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  String dateStr = "2016-12-27 14:36:00";
  Date date = sdf.parse(dateStr);
  System.out.println("Date = " + date.toString() + " NowTime = " + new Date().toString());
  timer.schedule(task, date);
 } catch (ParseException e) {
  e.printStackTrace();
 }
 }
}

執(zhí)行結(jié)果

Date = Tue Dec 27 14:36:00 CST 2016 NowTime = Tue Dec 27 21:28:04 CST 2016
Run Time:Tue Dec 27 21:28:04 CST 2016

說(shuō)明是立刻執(zhí)行。

schedule(TimerTask task, long delay, long period)

以當(dāng)前時(shí)間為基準(zhǔn),延遲指定的毫秒后,再按指定的時(shí)間間隔地?zé)o限次數(shù)的執(zhí)行TimerTask任務(wù)。(fixed-delay execution)

使用示例

public class Demo {
 private static Timer timer = new Timer();
 public static class MyTask extends TimerTask {
 @Override
 public void run() {
  System.out.println("Run Time: " + new Date().toString());
 }
 }
 public static void main(String[] args) {
 MyTask task = new MyTask();
 System.out.println("Now Time: " + new Date().toString());
 timer.schedule(task, 3000, 5000);
 }
}

執(zhí)行結(jié)果

Now Time: Tue Dec 27 21:34:59 CST 2016
Run Time: Tue Dec 27 21:35:02 CST 2016
Run Time: Tue Dec 27 21:35:07 CST 2016
Run Time: Tue Dec 27 21:35:12 CST 2016
Run Time: Tue Dec 27 21:35:17 CST 2016

說(shuō)明以當(dāng)前基準(zhǔn)時(shí)間延遲3秒后執(zhí)行一次,以后按指定間隔時(shí)間5秒無(wú)限次數(shù)的執(zhí)行。

schedule(TimerTask task, Date firstTime, long period)

在指定的日期之后,按指定的時(shí)間間隔地?zé)o限次數(shù)的執(zhí)行TimerTask任務(wù)。(fixed-delay execution)

如果日期firstTime早于當(dāng)前時(shí)間,則立刻執(zhí)行,且不執(zhí)行在時(shí)間差內(nèi)的任務(wù)。

使用示例

public class Demo {
 private static Timer timer = new Timer();
 public static class MyTask extends TimerTask {
 @Override
 public void run() {
  System.out.println("Run Time:" + new Date().toString());
 }
 public static void main(String[] args) {
  try {
  MyTask task = new MyTask();
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  String dateStr = "2016-12-27 14:36:00";
  Date date = sdf.parse(dateStr);
  System.out.println("Date = " + date.toString() + " NowTime = " + new Date().toString());
  timer.schedule(task, date, 3000);
  } catch (ParseException e) {
  e.printStackTrace();
  }
 }
 }
}

執(zhí)行結(jié)果

Date = Tue Dec 27 14:36:00 CST 2016 NowTime = Tue Dec 27 21:43:30 CST 2016
Run Time:Tue Dec 27 21:43:30 CST 2016
Run Time:Tue Dec 27 21:43:33 CST 2016
Run Time:Tue Dec 27 21:43:36 CST 2016

說(shuō)明指定的之間早于當(dāng)前時(shí)間,則立刻執(zhí)行,不會(huì)補(bǔ)充時(shí)間差內(nèi)的任務(wù)

scheduleAtFixedRate方法

scheduleAtFixedRate(TimerTask task, long delay, long period)

以當(dāng)前時(shí)間為基準(zhǔn),延遲指定的毫秒后,再按指定的時(shí)間間隔周期性地?zé)o限次數(shù)的執(zhí)行TimerTask任務(wù)。(fixed-rate execution)

使用示例

public class Demo {
 private static Timer timer = new Timer();
 public static class MyTask extends TimerTask {
 @Override
 public void run() {
  System.out.println("Run Time: " + new Date().toString());
 }
 }
 public static void main(String[] args) {
 MyTask task = new MyTask();
 System.out.println("Now Time: " + new Date().toString());
 timer.scheduleAtFixedRate(task, 3000, 5000);
 }
}

執(zhí)行結(jié)果

Now Time: Tue Dec 27 21:58:03 CST 2016
Run Time: Tue Dec 27 21:58:06 CST 2016
Run Time: Tue Dec 27 21:58:11 CST 2016
Run Time: Tue Dec 27 21:58:16 CST 2016
Run Time: Tue Dec 27 21:58:21 CST 2016

說(shuō)明以當(dāng)前基準(zhǔn)時(shí)間延遲3秒后執(zhí)行一次,以后按指定間隔時(shí)間5秒無(wú)限次數(shù)的執(zhí)行。

scheduleAtFixedRate(TimerTask task, Date firstTime, long period)

在指定的日期之后,按指定的時(shí)間間隔周期性地?zé)o限次數(shù)的執(zhí)行TimerTask任務(wù)。(fixed-rate execution)

如果日期firstTime早于當(dāng)前時(shí)間,則立即執(zhí)行,并補(bǔ)充性的執(zhí)行在時(shí)間差內(nèi)的任務(wù)。

使用示例

public class Demo {
 private static Timer timer = new Timer();
 public static class MyTask extends TimerTask {
 @Override
 public void run() {
  System.out.println("Run Time:" + new Date().toString());
 }
 public static void main(String[] args) {
  try {
  MyTask task = new MyTask();
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  String dateStr = "2016-12-27 22:02:00";
  Date date = sdf.parse(dateStr);
  System.out.println("Date = " + date.toString() + " NowTime = " + new Date().toString());
  timer.scheduleAtFixedRate(task, date, 5000);
  } catch (ParseException e) {
  e.printStackTrace();
  }
 }
 }
}

執(zhí)行結(jié)果

Date = Tue Dec 27 22:02:00 CST 2016 NowTime = Tue Dec 27 22:02:54 CST 2016
Run Time:Tue Dec 27 22:02:54 CST 2016
Run Time:Tue Dec 27 22:02:54 CST 2016
Run Time:Tue Dec 27 22:02:54 CST 2016
Run Time:Tue Dec 27 22:02:54 CST 2016
Run Time:Tue Dec 27 22:02:54 CST 2016
Run Time:Tue Dec 27 22:02:54 CST 2016
Run Time:Tue Dec 27 22:02:54 CST 2016
Run Time:Tue Dec 27 22:02:54 CST 2016
Run Time:Tue Dec 27 22:02:54 CST 2016
Run Time:Tue Dec 27 22:02:54 CST 2016
Run Time:Tue Dec 27 22:02:54 CST 2016
Run Time:Tue Dec 27 22:02:55 CST 2016
Run Time:Tue Dec 27 22:03:00 CST 2016
Run Time:Tue Dec 27 22:03:05 CST 2016

說(shuō)明指定的之間早于當(dāng)前時(shí)間,則立刻執(zhí)行。

在時(shí)間22:02:00--22:02:54內(nèi)大約有11個(gè)5秒間隔,則優(yōu)先補(bǔ)充性的執(zhí)行在時(shí)間差內(nèi)的任務(wù),然后在22:02:55補(bǔ)充完畢(執(zhí)行12次。ps:0-55秒?yún)^(qū)間段內(nèi)首位都算上,正好觸發(fā)12次),此后每隔5秒執(zhí)行一次定時(shí)任務(wù)。

執(zhí)行任務(wù)延時(shí)對(duì)比之 schedule 和 scheduleAtFixedRate

schedule不延時(shí)

使用示例

public class Demo {
 private static Timer timer = new Timer();
 private static int runCount = 0;
 public static class MyTask extends TimerTask {
 @Override
 public void run() {
  try {
  System.out.println("Begin Run Time: " + new Date().toString());
  Thread.sleep(3000);
  System.out.println("End Run Time: " + new Date().toString());
  runCount++;
  if (runCount == 3) {
   timer.cancel();
  }
  } catch (InterruptedException e) {
  e.printStackTrace();
  }
 }
 }
 public static void main(String[] args) {
 try {
  MyTask task = new MyTask();
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  String dateStr = "2016-12-27 14:36:00";
  Date date = sdf.parse(dateStr);
  System.out.println("Date = " + date.toString() + " NowTime = " + new Date().toString());
  timer.schedule(task, date, 5000);
 } catch (ParseException e) {
  e.printStackTrace();
 }
 }
}

執(zhí)行結(jié)果

早于當(dāng)前基準(zhǔn)時(shí)間

Date = Tue Dec 27 14:36:00 CST 2016 NowTime = Tue Dec 27 22:23:37 CST 2016
Begin Run Time: Tue Dec 27 22:23:37 CST 2016
End Run Time: Tue Dec 27 22:23:40 CST 2016
Begin Run Time: Tue Dec 27 22:23:42 CST 2016
End Run Time: Tue Dec 27 22:23:45 CST 2016
Begin Run Time: Tue Dec 27 22:23:47 CST 2016
End Run Time: Tue Dec 27 22:23:50 CST 2016

Process finished with exit code 0

晚于當(dāng)前基準(zhǔn)時(shí)間

Date = Tue Dec 27 22:42:00 CST 2016 NowTime = Tue Dec 27 22:41:54 CST 2016
Begin Run Time: Tue Dec 27 22:42:00 CST 2016
End Run Time: Tue Dec 27 22:42:03 CST 2016
Begin Run Time: Tue Dec 27 22:42:05 CST 2016
End Run Time: Tue Dec 27 22:42:08 CST 2016
Begin Run Time: Tue Dec 27 22:42:10 CST 2016
End Run Time: Tue Dec 27 22:42:13 CST 2016

Process finished with exit code 0

不管早還是晚于基準(zhǔn)時(shí)間,都不進(jìn)行補(bǔ)償,下一次任務(wù)的執(zhí)行時(shí)間參考的是上一次任務(wù)的開(kāi)始時(shí)間點(diǎn)來(lái)計(jì)算。

schedule延時(shí)

使用示例

public class Demo {
 private static Timer timer = new Timer();
 private static int runCount = 0;
 public static class MyTask extends TimerTask {
 @Override
 public void run() {
  try {
  System.out.println("Begin Run Time: " + new Date().toString());
  Thread.sleep(5000);
  System.out.println("End Run Time: " + new Date().toString());
  runCount++;
  if (runCount == 3) {
   timer.cancel();
  }
  } catch (InterruptedException e) {
  e.printStackTrace();
  }
 }
 }
 public static void main(String[] args) {
 try {
  MyTask task = new MyTask();
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  String dateStr = "2016-12-27 22:42:00";
  Date date = sdf.parse(dateStr);
  System.out.println("Date = " + date.toString() + " NowTime = " + new Date().toString());
  timer.schedule(task, date, 3000);
 } catch (ParseException e) {
  e.printStackTrace();
 }
 }
}

執(zhí)行結(jié)果

早于當(dāng)前基準(zhǔn)時(shí)間

Date = Tue Dec 27 22:42:00 CST 2016 NowTime = Tue Dec 27 22:45:17 CST 2016
Begin Run Time: Tue Dec 27 22:45:17 CST 2016
End Run Time: Tue Dec 27 22:45:22 CST 2016
Begin Run Time: Tue Dec 27 22:45:22 CST 2016
End Run Time: Tue Dec 27 22:45:27 CST 2016
Begin Run Time: Tue Dec 27 22:45:27 CST 2016
End Run Time: Tue Dec 27 22:45:32 CST 2016

Process finished with exit code 0

晚于當(dāng)前基準(zhǔn)時(shí)間

Date = Tue Dec 27 22:47:00 CST 2016 NowTime = Tue Dec 27 22:46:27 CST 2016
Begin Run Time: Tue Dec 27 22:47:00 CST 2016
End Run Time: Tue Dec 27 22:47:05 CST 2016
Begin Run Time: Tue Dec 27 22:47:05 CST 2016
End Run Time: Tue Dec 27 22:47:10 CST 2016
Begin Run Time: Tue Dec 27 22:47:10 CST 2016
End Run Time: Tue Dec 27 22:47:15 CST 2016

Process finished with exit code 0

不管早還是晚于當(dāng)前基準(zhǔn)時(shí)間,都不進(jìn)行補(bǔ)償,下一次任務(wù)的執(zhí)行時(shí)間都是參考上一次任務(wù)結(jié)束的時(shí)間點(diǎn)來(lái)計(jì)算。

scheduleAtFixedRate不延時(shí)

使用示例

public class Demo {
 private static Timer timer = new Timer();
 private static int runCount = 0;
 public static class MyTask extends TimerTask {
 @Override
 public void run() {
  try {
  System.out.println("Begin Run Time: " + new Date().toString());
  Thread.sleep(3000);
  System.out.println("End Run Time: " + new Date().toString());
  runCount++;
  if (runCount == 1000) {
   timer.cancel();
  }
  } catch (InterruptedException e) {
  e.printStackTrace();
  }
 }
 }
 public static void main(String[] args) {
 try {
  MyTask task = new MyTask();
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  String dateStr = "2016-12-27 22:51:42";
  Date date = sdf.parse(dateStr);
  System.out.println("Date = " + date.toString() + " NowTime = " + new Date().toString());
  timer.scheduleAtFixedRate(task, date, 5000);
 } catch (ParseException e) {
  e.printStackTrace();
 }
 }
}

執(zhí)行結(jié)果

早于當(dāng)前基準(zhǔn)時(shí)間

Date = Tue Dec 27 22:51:42 CST 2016 NowTime = Tue Dec 27 22:51:57 CST 2016
Begin Run Time: Tue Dec 27 22:51:57 CST 2016
End Run Time: Tue Dec 27 22:52:00 CST 2016
Begin Run Time: Tue Dec 27 22:52:00 CST 2016
End Run Time: Tue Dec 27 22:52:03 CST 2016
Begin Run Time: Tue Dec 27 22:52:03 CST 2016
End Run Time: Tue Dec 27 22:52:06 CST 2016
Begin Run Time: Tue Dec 27 22:52:06 CST 2016
End Run Time: Tue Dec 27 22:52:09 CST 2016
Begin Run Time: Tue Dec 27 22:52:09 CST 2016
End Run Time: Tue Dec 27 22:52:12 CST 2016
Begin Run Time: Tue Dec 27 22:52:12 CST 2016
End Run Time: Tue Dec 27 22:52:15 CST 2016
Begin Run Time: Tue Dec 27 22:52:15 CST 2016
End Run Time: Tue Dec 27 22:52:18 CST 2016
Begin Run Time: Tue Dec 27 22:52:18 CST 2016
End Run Time: Tue Dec 27 22:52:21 CST 2016
Begin Run Time: Tue Dec 27 22:52:22 CST 2016
End Run Time: Tue Dec 27 22:52:25 CST 2016
Begin Run Time: Tue Dec 27 22:52:27 CST 2016
End Run Time: Tue Dec 27 22:52:30 CST 2016
Begin Run Time: Tue Dec 27 22:52:32 CST 2016
End Run Time: Tue Dec 27 22:52:35 CST 2016
Begin Run Time: Tue Dec 27 22:52:37 CST 2016
End Run Time: Tue Dec 27 22:52:40 CST 2016
Begin Run Time: Tue Dec 27 22:52:42 CST 2016
End Run Time: Tue Dec 27 22:52:45 CST 2016
Begin Run Time: Tue Dec 27 22:52:47 CST 2016
End Run Time: Tue Dec 27 22:52:50 CST 2016
Begin Run Time: Tue Dec 27 22:52:52 CST 2016
End Run Time: Tue Dec 27 22:52:55 CST 2016
Begin Run Time: Tue Dec 27 22:52:57 CST 2016
End Run Time: Tue Dec 27 22:53:00 CST 2016

Process finished with exit code 0

晚于當(dāng)前基準(zhǔn)時(shí)間

Date = Tue Dec 27 22:37:00 CST 2016 NowTime = Tue Dec 27 22:36:06 CST 2016
Begin Run Time: Tue Dec 27 22:37:00 CST 2016
End Run Time: Tue Dec 27 22:37:03 CST 2016
Begin Run Time: Tue Dec 27 22:37:05 CST 2016
End Run Time: Tue Dec 27 22:37:08 CST 2016
Begin Run Time: Tue Dec 27 22:37:10 CST 2016
End Run Time: Tue Dec 27 22:37:13 CST 2016

Process finished with exit code 0

不延時(shí)的情況下,當(dāng)早于基準(zhǔn)時(shí)間時(shí),時(shí)間差內(nèi)的執(zhí)行任務(wù)未補(bǔ)償完時(shí),下一次執(zhí)行任務(wù)的時(shí)間參考的是上一次執(zhí)行任務(wù)的結(jié)束時(shí)間;一旦補(bǔ)償完畢(注意粗體時(shí)間點(diǎn)),下一次執(zhí)行任務(wù)的時(shí)間參考的是上一次執(zhí)行任務(wù)的開(kāi)始時(shí)間;當(dāng)晚于基準(zhǔn)時(shí)間時(shí),下一次執(zhí)行任務(wù)的時(shí)間參考的是上一次執(zhí)行任務(wù)的開(kāi)始時(shí)間。

scheduleAtFixedRate延時(shí)

使用示例

public class Demo {
 private static Timer timer = new Timer();
 private static int runCount = 0;
 public static class MyTask extends TimerTask {
 @Override
 public void run() {
  try {
  System.out.println("Begin Run Time: " + new Date().toString());
  Thread.sleep(5000);
  System.out.println("End Run Time: " + new Date().toString());
  runCount++;
  if (runCount == 3) {
   timer.cancel();
  }
  } catch (InterruptedException e) {
  e.printStackTrace();
  }
 }
 }
 public static void main(String[] args) {
 try {
  MyTask task = new MyTask();
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  String dateStr = "2016-12-27 22:28:00";
  Date date = sdf.parse(dateStr);
  System.out.println("Date = " + date.toString() + " NowTime = " + new Date().toString());
  timer.scheduleAtFixedRate(task, date, 3000);
 } catch (ParseException e) {
  e.printStackTrace();
 }
 }
}

執(zhí)行結(jié)果

早于當(dāng)前基準(zhǔn)時(shí)間

Date = Tue Dec 27 23:01:00 CST 2016 NowTime = Tue Dec 27 23:01:19 CST 2016
Begin Run Time: Tue Dec 27 23:01:19 CST 2016
End Run Time: Tue Dec 27 23:01:24 CST 2016
Begin Run Time: Tue Dec 27 23:01:24 CST 2016
End Run Time: Tue Dec 27 23:01:29 CST 2016
Begin Run Time: Tue Dec 27 23:01:29 CST 2016
End Run Time: Tue Dec 27 23:01:34 CST 2016
Begin Run Time: Tue Dec 27 23:01:34 CST 2016
End Run Time: Tue Dec 27 23:01:39 CST 2016

晚于當(dāng)前基準(zhǔn)時(shí)間

Date = Tue Dec 27 22:28:00 CST 2016 NowTime = Tue Dec 27 22:27:55 CST 2016
Begin Run Time: Tue Dec 27 22:28:00 CST 2016
End Run Time: Tue Dec 27 22:28:05 CST 2016
Begin Run Time: Tue Dec 27 22:28:05 CST 2016
End Run Time: Tue Dec 27 22:28:10 CST 2016
Begin Run Time: Tue Dec 27 22:28:10 CST 2016
End Run Time: Tue Dec 27 22:28:15 CST 2016

Process finished with exit code 0

延時(shí)的情況下,即使是早于基準(zhǔn)時(shí)間,由于延時(shí)效應(yīng),根本不可能補(bǔ)償完畢時(shí)間差內(nèi)的執(zhí)行任務(wù),故而在延時(shí)的情況下,下一次任務(wù)的執(zhí)行時(shí)間都是參考上一次任務(wù)結(jié)束的時(shí)間來(lái)計(jì)算。

對(duì)比總結(jié)

執(zhí)行任務(wù)不延時(shí) 執(zhí)行任務(wù)延時(shí)
早于當(dāng)前基準(zhǔn)時(shí)間 schedule:下一次任務(wù)的執(zhí)行時(shí)間參考的是上一次任務(wù)的開(kāi)始時(shí)間來(lái)計(jì)算。 scheduleAtFixedRate:當(dāng)早于基準(zhǔn)時(shí)間時(shí),時(shí)間差內(nèi)的執(zhí)行任務(wù)未補(bǔ)償完時(shí),下一次執(zhí)行任務(wù)的時(shí)間參考的是上一次任務(wù)的結(jié)束時(shí)間;一旦補(bǔ)償完畢,下一次執(zhí)行任務(wù)的時(shí)間參考上一次任務(wù)的開(kāi)始時(shí)間來(lái)計(jì)算。 二者一樣。下一次任務(wù)的執(zhí)行時(shí)間都是參考上一次任務(wù)的結(jié)束時(shí)間來(lái)計(jì)算。
晚于當(dāng)前基準(zhǔn)時(shí)間 二者一樣。下一次任務(wù)的執(zhí)行時(shí)間參考的是上一次任務(wù)的開(kāi)始時(shí)間來(lái)計(jì)算。 二者一樣。下一次任務(wù)的執(zhí)行時(shí)間都是參考上一次任務(wù)的結(jié)束時(shí)間來(lái)計(jì)算。

以上就是本文的全部?jī)?nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,同時(shí)也希望多多支持腳本之家!

相關(guān)文章

  • JAVA 自定義線程池的最大線程數(shù)設(shè)置方法

    JAVA 自定義線程池的最大線程數(shù)設(shè)置方法

    這篇文章主要介紹了JAVA 自定義線程池的最大線程數(shù)設(shè)置方法,文中示例代碼非常詳細(xì),供大家參考和學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • SpringBoot @PostMapping接收HTTP請(qǐng)求的流數(shù)據(jù)問(wèn)題

    SpringBoot @PostMapping接收HTTP請(qǐng)求的流數(shù)據(jù)問(wèn)題

    這篇文章主要介紹了SpringBoot @PostMapping接收HTTP請(qǐng)求的流數(shù)據(jù)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • resty client使用Java客戶端來(lái)訪問(wèn)Api

    resty client使用Java客戶端來(lái)訪問(wèn)Api

    這篇文章主要介紹了resty-client使用Java客戶端來(lái)訪問(wèn)Api的驗(yàn)證權(quán)限,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-03-03
  • 使用OkHttp3以Multipart/Form-Data方式上傳文件方式

    使用OkHttp3以Multipart/Form-Data方式上傳文件方式

    在開(kāi)發(fā)過(guò)程中,使用multipart/form-data進(jìn)行圖片上傳是一個(gè)常見(jiàn)的需求,本文通過(guò)一個(gè)實(shí)際案例,講解了如何在項(xiàng)目中添加OkHttp3庫(kù)依賴,并使用multipart/form-data進(jìn)行圖片上傳,首先,介紹了ContentType的概念和常見(jiàn)類型
    2024-10-10
  • 一文帶你搞懂Java單例模式

    一文帶你搞懂Java單例模式

    單例就是單實(shí)例的意思,即在系統(tǒng)全局,一個(gè)類只創(chuàng)建一個(gè)對(duì)象,并且在系統(tǒng)全局都可以訪問(wèn)這個(gè)對(duì)象而不用重新創(chuàng)建。本文將通過(guò)示例為大家詳細(xì)講解Java單例模式的使用,需要的可以參考一下
    2022-11-11
  • FF瀏覽器和IE下載文件亂碼問(wèn)題的解決方法

    FF瀏覽器和IE下載文件亂碼問(wèn)題的解決方法

    大家可以看到如下截圖,下載文件出現(xiàn)了亂碼,在其他瀏覽器(IE,Chrome....)上沒(méi)有出現(xiàn)這個(gè)問(wèn)題,解決方法很簡(jiǎn)單,遇到類似問(wèn)題的朋友可以了解下哦
    2013-08-08
  • IDEA調(diào)試小技巧之Evaluate調(diào)試工具詳解

    IDEA調(diào)試小技巧之Evaluate調(diào)試工具詳解

    這篇文章主要介紹了IDEA調(diào)試小技巧之Evaluate調(diào)試工具,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Spring源碼解析之Configuration

    Spring源碼解析之Configuration

    今天帶大家來(lái)學(xué)習(xí)Java Spring相關(guān)知識(shí),文中對(duì)Configuration源碼介紹的非常詳細(xì),有非常多的圖文解說(shuō)及代碼示例,對(duì)正在學(xué)習(xí)java的小伙伴們很有幫助,需要的朋友可以參考下
    2021-05-05
  • 基于CyclicBarrier和CountDownLatch的使用區(qū)別說(shuō)明

    基于CyclicBarrier和CountDownLatch的使用區(qū)別說(shuō)明

    這篇文章主要介紹了基于CyclicBarrier和CountDownLatch的使用區(qū)別說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-09-09
  • Hadoop組件簡(jiǎn)介

    Hadoop組件簡(jiǎn)介

    Hadoop作為一種分布式基礎(chǔ)架構(gòu),可以使用戶在不了解分布式底層細(xì)節(jié)的情況下,開(kāi)發(fā)分布式程序。接下來(lái)通過(guò)本文給大家分享Hadoop組件簡(jiǎn)介,感興趣的朋友一起看看吧
    2017-09-09

最新評(píng)論