多线程的学习

多线程编辑:
可以简单理解进程是一个软件 而线程就是一个软件中多个可以同时运行的功能

 

 

实现多线程的第一种方式:使用Thead类我们再自己创造一个类继承于这个类我们在对Thead方法进行重写,注意我们再重写的时候一定要加上@Override这行

我犯下的错误2:

我们在类里面调用方法的时候我们是不需要加上对象的名字,当我们在想要使用多线程的时候我们要用对象名.start()  这个时候才能实现多线程

多线程的第二种实现方式:实现Runnable接口的方式进行实现

 

 

具体代码如上

实现多线程的第3种方式:

着种方式可以获得多线程的结果

实现多线程的步骤:第一创建任务 第二分配任务 第三讲任务交给多线程 第四启动多线程

Thread类的成员方法

继承的复习:当我们想要在子类进行构造方法我们可以先用super继承父类 ,然后我们在后面我们创建的线程取名字。

在多线程中如果我们使用的是接口的话,我们就需要创建任务,然后再将任务放到多线程中

如果我们使用的是extends 继承Thread类的话,我们就可以直接使用多线程

延时

Thread.sleep(毫秒) 这个其实就是和easyx库里面的sleep函数是一个意思,由于这个Thread.sleep是静态方法我们直接类名加上方法名使用。

设置线程优先级

对象名.setPriority()这个是给我们设置优先级的,最高优先级是10,最低优先级是1,这个优先级只是代表了一个概率的问题

守护线程(备胎线程)

 

 

具体代码如上:

效果就是作为备胎当它要保护的对象已经执行完了,那么这个备胎对象就没有执行下去的必要了,那么就会自动停止,注意这个不是马上就会停止,而是会等一段时间才会停下来

线程的生命周期

线程安全:由于多线程具有随机性,当一条语句还没有完全执行完有可能就会被另外一条语句所占有,这个时候就会造成错误,就好比我们和好朋友再上厕所,只有厕所有门的时候才能单独上厕所,如果厕所没有门,那么本来该单人厕所就会被两个人占有,就会出问题。

所以这个时候我们呢就需要一种操作’锁’:synchronized

我犯下的错误:

这个延时应该放在锁的外面

package duoxianchenanquan;

public class Mythread extends Thread{
    static int ticket = 0;

    @Override
    public void run(){
        while(true){
            try {
                Thread.sleep(10);
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
            synchronized (Mythread.class){
                if(ticket < 100){

                    ticket++;
                    System.out.println(getName() + "正在卖第" + ticket + "张票! ! !");
                }
                else {
                    break;
                }
            }
        }
    }

}

当我们需要对一个方法进行 就是一个同步方法

顺便复习一下this的使用方法:他的这个对象就是调用这个方法的对象

小技巧:ctrl + alt + m这个就可以使我们选择的一段代码直接转化为一个方法。

Lock锁

为了避免死锁我们就不能写一个锁嵌套的结构

生产消费机制

相关推荐

  1. Qt线学习

    2024-04-12 22:48:05       45 阅读
  2. 线使用

    2024-04-12 22:48:05       58 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-12 22:48:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-12 22:48:05       101 阅读
  3. 在Django里面运行非项目文件

    2024-04-12 22:48:05       82 阅读
  4. Python语言-面向对象

    2024-04-12 22:48:05       91 阅读

热门阅读

  1. 90天玩转Python—14—基础知识篇:变量进阶

    2024-04-12 22:48:05       32 阅读
  2. Debian11 下源码编译 rtpengine 11.1

    2024-04-12 22:48:05       38 阅读
  3. sklearn的LabelEncoder 遇到新值的解决办法

    2024-04-12 22:48:05       34 阅读
  4. NOI / 1.6编程基础之一维数组

    2024-04-12 22:48:05       39 阅读
  5. redis的缓存击穿、缓存穿透、缓存雪崩

    2024-04-12 22:48:05       41 阅读
  6. 【leetcode面试经典150题】45. 快乐数(C++)

    2024-04-12 22:48:05       45 阅读
  7. IP为什么要分类呢

    2024-04-12 22:48:05       44 阅读
  8. linux上blkid命令

    2024-04-12 22:48:05       39 阅读