• Java多线程


    Java多线程面试

    1) 什么是线程?

    线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。程序员可以通过它进行多处理器编程,你可以使用多线程对 运算密集型任务提速。比如,如果一个线程完成一个任务要100毫秒,那么用十个线程完成改任务只需10毫秒。

    2) 线程和进程有什么区别?

    线程是进程的子集,一个进程可以有很多线程,每条线程并行执行不同的任务。不同的进程使用不同的内存空间,而所有的线程共享一片相同的内存空间。别把它和栈内存搞混,每个线程都拥有单独的栈内存用来存储本地数据。

    3) 如何在Java中实现线程?

    在语言层面有两种方式。java.lang.Thread 类的实例就是一个线程但是它需要调用java.lang.Runnable接口来执行,由于线程类本身就是调用的Runnable接口所以你可以继承 java.lang.Thread 类或者直接调用Runnable接口来重写run()方法实现线程。

     4)用Runnable还是Thread?

      Java不支持多继承,但是允许调用多个接口。

    5)Thread类中的start()和run()方法他有什么区别?

      start()是用来启动新创建的线程,而且start()内部调用了run()方法,这和直接调用run()方法效果不一样。当你调用run方法的时候,只是会在原来的线程中调用,而没有新的线程启动,start()方法才会启动新线程。

     6)

    1. 引言:

        高可用:数据不能出错

        高性能:体验高

        高并发:同时进行

           在程序运行时,即使没有自己创建线程,后台也会存在多个线程。

          main()称之为主线程,系统的入口点,用于执行整个程序;

          在一个线程中,如果开辟了多个线程,线程的运行由调度器安排调度,调度器与操作系统紧密相关,先后顺序认为不能直接干预。

          对于一份资源操作时,会存在资源抢夺的问题,需要加入并发控制。

          线程会带来额外的开销,会存在资源抢夺的问题,需要加入并发控制

          每个线程在自己的工作内存交互,加载和存储主内存监控不当会造成数据不一致

    •  多线程实现

         多实现,少继承

         创建多线程:

      1. 继承Thread类
      2. 实现Runnable接口
      3. 实现Callable接口            

          

  • 相关阅读:
    zoj 1004 Anagrams by Stack (dfs+stack)
    poj 3009 Curling 2.0 (dfs)
    poj 2965 The Pilots Brothers' refrigerator (bfs+位运算)
    bcl 1387 最长重复子串 (后缀数组)
    zoj 3332 Strange Country II (dfs)
    poj 2157 Maze (bfs)
    poj 1564 && zoj 1711 Sum It Up (dfs)
    hdu 2686 Matrix (多进程DP)
    poj 3256 Cow Picnic (dfs)
    poj 1606 Jugs (bfs)
  • 原文地址:https://www.cnblogs.com/alex-gc/p/11634226.html
Copyright © 2020-2023  润新知