Java 处理线程

【Java 线程处理部分】

这是一份关于在业务中使用的 Java 线程处理的备忘录。由于在开发过程中使用,因此做了总结。

线程是什么。

线程(thread)是一种在程序中同时运行多个处理的机制。

在Java中,提供了一个可以同时执行多个任务的API。
→使用thread类来生成线程。

・考虑到便利店的收银台作为例子。
在午休或其他繁忙时间,如果只有一个收银台,那将会花费很长时间,而且不方便。
如果有两到三个收银台在运作,能够迅速处理顾客并提高效率。

如果在程序中同时运行多个处理,可以在短时间内高效地进行处理。
这个机制就是线程。线程在日常生活中也经常被使用。

线程处理

继承Thread类,并重写run()方法。

将想要在线程中处理的内容写入到 run() 方法中。

覆写是指在子类声明时继承父类,并在子类中覆盖父类成员的操作。

在想要启动不同线程的位置上,实例化类①,并调用start()方法。

方法是将多个句子整合为一个命名的处理单元,它是组成部分的最小单位。

//Threadを継承したクラスでは、スレッドで実行したい処理をrunメソッドの中に書く。

class Sample extends Thread {
  public void run() {
    System.out.println("スレッド");
  }
}
//Threadを継承したクラスのインスタンスを生成し、startメソッドを呼び出し、スレッドを動かす。

class SampleSample {
  public static void main(String[] args) {
    ThreadSample t = new ThreadSample();
      t.start();
  }
}

//実行結果:スレッド

创建了run()方法,通过start()方法启动了一个新的线程。

明智的做法是基本上不使用stop()等操作,因为它们有时可能导致致命故障。

Thread.sleep的使用方法

当想要暂停或等待某项处理时,可以使用sleep方法来暂停Java程序的操作。通常情况下,使用sleep方法需要与try-catch语句一起使用。然而,即使在sleep期间发生异常,通常也不需要进行任何操作,因此catch块通常为空。

※需要正确恐惧线程。

尽量思考并采用少用线程的方法。多线程程序需要从设计阶段开始考虑整个程序。如果不得不使用线程,必须做好承担巨大风险的准备。

在开发过程中应充分考虑时间和组织的弹性。
对测试和问题的辨别十分困难,这可能会影响整个开发过程。
因为同时进行严格的测试很困难,有时会导致在正式运营中无法进行严谨的测试。

即使出现错误,由于无法复现,很难确定原因并修复故障。

当多个线程同时使用同一变量或方法时,存在数据破坏的风险。

//データ破壊を回避するために、synchronized で排他制御処理をする。
//実行できるのは、1スレッドのみ。

synchronized(対象インスタンス){
  //複数スレッドから同時実行されないように保護したいコード
}