您当前的位置: 首页 >  Java

ITKEY_

暂无认证

  • 0浏览

    0关注

    732博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Java温故而知新-多线程

ITKEY_ 发布时间:2021-01-17 08:40:34 ,浏览量:0

目录
  • 线程与进程
  • windows下查CPU信息
  • Thread类实现多线程
    • 错误的代码🤣
    • 正确的写法
  • Runnable
      • Lambda写法
  • Runnable与Thread的关系
    • 卖票程序演示
      • Thread方式实现
  • Callable
  • 生命周期
  • 线程的休眠
  • 线程中断
  • 线程的强制执行
  • 线程同步
  • 线程死锁
  • 生产者与消费者模型
    • 生产者与消费者模型的实现类结构
    • 数据同步处理
    • 解决线程重复的操作问题
    • 优雅的停止线程
    • 守护线程
  • volatile
  • 学习心得

线程与进程

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

windows下查CPU信息

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

Thread类实现多线程

在这里插入图片描述 在这里插入图片描述

错误的代码🤣

直接调用run()方法是错误的!!!

class MyThread extends Thread { // 定义线程主体类
    private String name;

    public MyThread(String name) { // 设置一个名称
        this.name = name;
    }

    @Override   // 覆写父类中的方法
    public void run() { // 线程运行的主方法
        for (int x = 0; x  0) {   // 编写一个循环
            if (this.ticket > 0) {  // 判断是否有剩余的票数
                System.out.println("【卖票】ticket = " + this.ticket --); // 卖票处理
            } else { // 结束循环
                break ;
            }
        }
    }
}
public class YootkDemo {    // 李兴华编程训练营:yootk.ke.qq.com
    public static void main(String[] args) {
        MyThread myThread = new MyThread() ; // 创建Runnable接口对象
        // Runnable如果要想进行启动则必须依靠Thread类,而在Thread类里面提供有一个target的属性。
        Thread threadA = new Thread(myThread) ; // 创建Thread类的对象实例
        Thread threadB = new Thread(myThread) ; // 创建Thread类的对象实例
        Thread threadC = new Thread(myThread) ; // 创建Thread类的对象实例
        threadA.start();    // 启动多线程,所有的操作都针对于同一个target对象实例完成
        threadB.start();    // 启动多线程,所有的操作都针对于同一个target对象实例完成
        threadC.start();    // 启动多线程,所有的操作都针对于同一个target对象实例完成
    }
}

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

Callable

在这里插入图片描述  在这里插入图片描述 在这里插入图片描述

package com.yootk.demo;

import java.util.concurrent.Callable;
import java.util.concurrent.Future;
import java.util.concurrent.FutureTask;
import java.util.concurrent.RunnableFuture;

class MyThread implements Callable { // 返回值类型为String
    @Override   // 覆写父类中的方法
    public String call() { // 线程运行的主方法
        String result = "" ; // 保存返回结果
        for (int x = 0 ; x  {
            for (int x = 0; x = 10) {  // 设置一个处理条件
                        mainThread.join();  // 子线程要交出全部的资源给主线程
                    }
                    System.out.println("〖" + Thread.currentThread().getName() + "〗子线程执行,x = " + x);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }, "工作线程"); // 创建一个线程类
        joinThread.start(); // 启动子线程
        for (int x = 0; x             
关注
打赏
1665243900
查看更多评论
0.0717s