多线程的主要的操作方法都在 Thread 类中
线程的命名和取得
由于多线程的运行状态是不确定的,所以对于多线程的操作必须有一个可以明确标识出线程对象的信息,往往使用名称来描述。
//获取当前线程名称
Thread.currentThread().getName();
线程池(四种实现方式)
- 创建无限大小的线程池
//创建了线程池,但线程池中现在没有线程
ExecutorService es = Executor.newCachedThreadPool()
;
//往线程池中添加线程对象
es.submit(() -> { System.out.println("成功添加了线程"); });
//关闭线程池
es.shutdown();
- 创建单线程的线程池
ExecutorService es = Executor.newSingleThreadExecutor()
;
- 创建固定大小的线程池
ExecutorService es = Executor.newFixedThreadPool(3) //指定线程池中只有三个线程
;
- 定时调度池(代码会自动执行)
//创建一个具备有一个线程大小的定时调度线程池
ScheduledExecutorService ses = Executor.newScheduledThreadPool(1)
;
//4个参数:Runnable接口(线程对象),三秒后开始,每两秒重复一次,时间单位
ses.scheduleAtFixedRate(() -> { System.out.println("成功添加了线程"); }, 3, 2, TimeUnit.SECONDS);
线程池给开发者带来的唯一好处是允许多个线程按照一组的模式进行程序的处理,这样在某一个业务逻辑非常复杂的情况下,性能就会得到很好的提升。
Runtime 类
Runtime 类是一个运行时的描述类,在每一个 JVM 的进程之中,都会存在有一个 Runtime 类的对象。该类是一个单例类。
- 可以通过 Runtime.getRuntime() 取得 Rumtime 对象之后最主要的功能是可以通过它来观察当前的内存操作情况。
方法介绍 | 类型 | 描述 |
---|---|---|
public long freeMemory() | 普通 | 取得当前空余内存空间大小 |
public long totalMemory() | 普通 | 取得当前可以使用的总空间大小 |
public long maxMemory() | 普通 | 取得最大的可用内存空间 |
public void gc() | 普通 | 执行垃圾回收处理 |
网友评论