ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

多线程 1

多线程 1 1. 什么是线程首先需要了解下什么是 进程进程 : 就是运行起来的程序我们平时在电脑上运行一个程序例如打开浏览器打开音乐播放器启动 MySQL操作系统会为它们创建对应的进程线程 : 进程内部的一条执行流 。每个线程之间都可以按照顺序执⾏⾃⼰的代码, 多个线程之间同时执⾏着多份代码线程也叫轻量级进程线程的创建和销毁的开销要比进程的创建和销毁的开销低同一个进程的多个线程 , 共用 PCB 的内存指针和文件描述表 , 但是每个线程有自己的状态上下文优先级记账信息如果进程是一个公司的话 那线程就是员工员工可以共享、电脑、办公室、资料等资源招聘员工的成本要比建一个公司成本要小得多2. 线程和进程的区别1. 一个进程包含多个线程2. 线程是系统调度执行的基本单位 进程是系统资源分配的基本单位3. 每个进程都有着独立的资源进程间资源是不能共享的一个进程的多个线程之间资源是共享的4. 进程之间不会相互影响一个进程挂了不会影响其他进程同一个进程的线程挂了可能其他线程也会挂掉整个进程崩溃5. 进程间通常不会资源冲突同一个进程的线程间容易发生资源访问冲突3. 线程的创建继承 Thread 类classMythreadextendsThread{Overridepublicvoidrun(){while(true){System.out.println(这⾥是线程运⾏的代码);}}}publicclassDemo1{publicstaticvoidmain(String[]args){//创建出线程实例ThreadtnewMythread();//启动线程 start 启动线程就调用 run() 方法t.start();}}实现 Runnable 接口classMyRunnableimplementsRunnable{Overridepublicvoidrun(){System.out.println(这⾥是线程运⾏的代码);}}publicclassDemo2{publicstaticvoidmain(String[]args){MyRunnablernewMyRunnable();ThreadtnewThread(r);t.start();}}匿名内部类创建 Thread 子类对象publicclassDemo3{publicstaticvoidmain(String[]args){ThreadtnewThread(){Overridepublicvoidrun(){System.out.println(这⾥是线程运⾏的代码);}};t.start();}}匿名内部类创建 Runnable 子类对象publicclassDemo4{publicstaticvoidmain(String[]args){ThreadtnewThread(newRunnable(){Overridepublicvoidrun(){System.out.println(这⾥是线程运⾏的代码);}});t.start();}}lambda 表达式创建 Runnable ⼦类对象publicclassDemo5{publicstaticvoidmain(String[]args){ThreadtnewThread(()-{System.out.println(这⾥是线程运⾏的代码);});t.start();}}
返回列表