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(対象インスタンス){
//複数スレッドから同時実行されないように保護したいコード
}