java进阶

1.线程与进程

1.1.线程与进程区别

  1. 线程是程序执行的最小单位,而进程是程序的一次执行过程,是操作系统分配资源的最小单位;
  2. 一个进程由一个或多个线程组成,线程是一个进程中代码的不同执行路线
  3. 进程之间相互独立,但同一进程下的各个线程之间共享程序的内存空间(包括代码段,数据集,堆等)及一些进程级的资源(如打开文件和信
    号等),某进程内的线程在其他进程不可见;
  4. 调度和切换:线程上下文切换比进程上下文切换要快得多

1.2.多线程如何创建

1.2.1.Thread

  1. package com.sunyj.practice.t0011_进程与线程;
  2. /**
  3. * @author jia
  4. * @since 2020-08-15 23:35
  5. */
  6. public class Thread01 extends Thread {
  7. public static void main(String[] args) {
  8. Thread01 thread01 = new Thread01();
  9. thread01.start();
  10. }
  11. @Override
  12. public void run() {
  13. System.out.println("thread01运行。。。");
  14. }
  15. }

1.2.2.Runnable

  1. package com.sunyj.practice.t0011_进程与线程;
  2. /**
  3. * @author jia
  4. * @since 2020-08-15 23:37
  5. */
  6. public class Runnable01 implements Runnable {
  7. @Override
  8. public void run() {
  9. System.out.println("runnable01运行。。。");
  10. }
  11. public static void main(String[] args) {
  12. new Thread(new Runnable01()).start();
  13. }
  14. }

1.2.3.Callable

  1. package com.sunyj.practice.t0011_进程与线程;
  2. import java.util.concurrent.Callable;
  3. /**
  4. * @author jia
  5. * @since 2020-08-15 23:39
  6. */
  7. public class Callable01 implements Callable {
  8. @Override
  9. public String call() throws Exception {
  10. System.out.println("callable01运行。。。");
  11. return "success";
  12. }
  13. public static void main(String[] args) {
  14. Callable01 callable01 = new Callable01();
  15. try {
  16. String call = callable01.call();
  17. System.out.println(call);
  18. } catch (Exception e) {
  19. e.printStackTrace();
  20. }
  21. }
  22. }