多线程编程

进程和线程的概念

  • 进程是程序的一次执行,线程是进程中执行的一段程序片段。
  • 进程间是独立的,占用地址空间,上下文环境,线程运行在进程地址空间内。
  • 进程间通过IPC技术进行共享,同一进程下的线程天然共享同一进程地址空间。
  • 同一进程的代码不能同步执行,除非引入线程。
  • 进程退出时线程都要销毁。

多线程的用途

  • 提升效率,将占据长时间的程序放到后台去处理
  • 提升用户体验,如进度条
  • 在单道系统中不需要进程,在多道系统中为了提升CPU利用率,引入了进程。
  • 进一步为了降低资源分配的消耗和进程内的通信,引入了线程

多线程实现

  • C++中的线程函数依赖于系统API,不能跨平台,而JAVA的线程程序是跨平台的
  • 通过继承Rnnnable()接口和Thread类实现
    public class RunTest implements Runnable {
    public void run() {
    }
    }
    public class ThreadTest extends Thread {
    public void run() {
    }
    }
    区别
    Runnnable 接口继承不影响类再继承其他接口
    Thread类继承后不能再继承其他类

线程同步与线程池

  • 同步
    synchronized(static obj)
  • 线程池
    ThreadPoolExecutor(size, keepAliveTime, queue)

你可能感兴趣的:(多线程编程)