• 多线程,进程


    1.什么是多线程?

    在一个进程中同时运行了多个线程,用来完成不同的工作,则称之为“多线程”,并且多个线程交替占用CPU资源,而非真正的并行执行,多线程的本质是抢CPU资源

    2.在Java中创建线程的两种方法?

            继承java.lang.Thread类

            1.继承Thread类

            2.重写run()方法

            3.调用start()方法启动该线程

    1. public class MyThread extends Thread{
    2. //重写run()方法
    3. public void run(){
    4. for(int i=1;i<100;i++){ System.out.println(
    5. Thread.currentThread().getName()+":"+i);
    6. }}}
    1. public static void main(String[] args) {
    2. MyThread thread = new MyThread();
    3. thread.start(); //启动线程

     

            实现java.lang.Runnable接口

             1.实现Runnable接口

            2.实现run()方法,编写线程执行体

            3.创建线程对象,调用start()方法启动线程

    1. public class MyRunnable implements Runnable{
    2. public void run(){
    3. for(int i=1;i<100;i++){ System.out.println(
    4. Thread.currentThread().getName()+":"+i);
    5. }}}
    1. public static void main(String[] args) {
    2. MyRunnable myRunnable = new MyRunnable();
    3. Thread myThread = new Thread(myRunnable);
    4. thread.start(); //启动线程}

     

    3.操作线程的步骤?

     

    4.直接调用run()和start()区别接调用run()和start()区别 ?

     5.比较两种创建线程的方式?

    继承 Thread
    编写简单,可直接操作线程
    适用于单继承
    实现 Runnable 接口
    避免单继承局限性
    便于共享资源

     

    6.线程的五个状态?

     

    7.线程的优先级?

    从1-10,1最低,默认5,优先级高低表示抢占CPU概率的大小 

     8.线程礼让?

    暂停当前线程,允许其他具有相同优先级的线程获得运行机会,只是提供一次同时抢资源的机会,自己也参与抢夺

    9.线程上锁--synchronized关键字

    访问修饰符 synchronized 返回类型 方法名(参数列表){……} 

     使用synchronized关键字修饰的代码块

    synchronized(syncObject){

        //需要同步的代码

    }

     解决:多个并发线程访问同一资源的同步代码块时?

    • 同一时刻只能有一个线程进入synchronizedthis)同步代码块
    • 当一个线程访问一个synchronizedthis)同步代码块时,其他synchronizedthis)同步代码块同样被锁定
    • 当一个线程访问一个synchronizedthis)同步代码块时,其他线程可以访问该资源的非synchronizedthis)同步代码

    10.线程安全的类型

    方法是否同步

     效率比较

    适合场景

    线程安全

    多线程并发共享资源

    非线程安全

    单线程

     

  • 相关阅读:
    shell 函数
    【VR】【Unity】如何调整Quest2的隐藏系统时间日期
    MessageQueue和Looper学习
    牛客网刷题-括号匹配问题
    记一次应用接入第三方统一认证服务的过程,基于JWT和OAuth2.0
    创建.NET MAUI程序
    R语言绘制带误差线的条形图
    用timerfd_*系列函数代替alarm作为定时器选项
    NSSCTF第10页(3)
    IDEA工具第二篇:自定义Java方法注释模板
  • 原文地址:https://blog.csdn.net/qq_62917168/article/details/126492286