首页 > 其他分享 >volatile关键字,使变量在多个线程之间可见

volatile关键字,使变量在多个线程之间可见

时间:2023-09-13 23:33:39浏览次数:30  
标签:printStringService isContinuePrint Thread 关键字 boolean volatile 线程 public printSt

在多线程中继承Thread类和实现runnable接口的


别并不大,但是,如果是需要继承Thread之外的其他接口,就可以使用实现runnable接口的方式。 测试类:

public class PrintString {
    private boolean isContinuePrint = true;
    public boolean isContinuePrint() {
        return isContinuePrint;
    }
    public void setContinuePrint(boolean isContinuePrint) {
        this.isContinuePrint = isContinuePrint;
    }
    public void printStringMethod() {
        try {
            while (isContinuePrint == true) {
                System.out.println("run printStringMethod threadName="
                        + Thread.currentThread().getName());
                Thread.sleep(1000);
            }
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

运行类testRun:

public class Run {
    public static void main(String[] args) {
        PrintString printStringService = new PrintString();
        printStringService.printStringMethod();
        System.out.println("我要停止它!stopThread="
                + Thread.currentThread().getName());
        printStringService.setContinuePrint(false);
    }
}

发现是停不下来的

标签:printStringService,isContinuePrint,Thread,关键字,boolean,volatile,线程,public,printSt
From: https://blog.51cto.com/u_15927490/7465553

相关文章

  • 第十八章 多线程
    18.1基本概念18.1.1程序和进程的概念程序-数据结构+算法,主要指存放在硬盘上的可执行文件。进程-主要指运行在内存中的可执行文件。目前主流的操作系统都支持多进程,为了让操作系统同时可以执行多个任务,但进程是重量级的,也就是新建一个进程会消耗CPU和内存空间等系统资......
  • Android 编译线程爆了, gradle 内存 OOM 解决之路
    本文首发我的微信公众号徐公,收录于Github·AndroidGuide,这里有Android进阶成长知识体系,希望我们能够一起学习进步,关注公众号徐公,5年中大厂程序员,一起建立核心竞争力背景最近我们项目在编译的时候,编译多次之后,有挺多人反馈会出现OOM的,在项目的根目录下面会出现hs_err_......
  • 线程池------小记
    1、线程池的产生背景1、线程是一种系统资源,每创建一个新的线程都会占用一定的内存。如果是高并发的情况下,短时间生成了很多任务,如果为每个任务都创建一个新的线程,对内存的占用是相当大的,甚至有可能出现内存内存溢出。2、同时线程也不是创建的越多越好,在cpu核数的限制下,当需要大量......
  • 亚马逊API接口解析,实现按关键字搜索商品
    要解析亚马逊API接口并实现按关键字搜索商品,你需要按照以下步骤进行操作:了解亚马逊开发者中心:访问亚马逊开发者中心,并了解相关的API文档、开发者指南和规定。注册开发者账号:在亚马逊开发者中心上注册一个开发者账号,并创建一个应用,获取到API权限。获取API密钥:为了使用亚马逊API接......
  • play如何创建多线程任务
    应用场景:需要多线程同时操作数据库,进行insrt操作准备:1、要将数据拆分开来,具备唯一的id主键,在insert之前判断是否已经存在数据库2、创建一个线程类publicclassBidInfoThreadextendsThread{privateintdata;publicBidInfoThread(intdata){this.data=d......
  • Java21虚拟线程的注意点
    Java21虚拟线程的注意点ThreadLocal能继续用么?Java开发组设计虚拟线程的时候,原本想去掉对ThreadLocal的支持。但由于使用它的库太多,并且很多为了传参才用,并不是缓存,所以就保持了支持。像隐式传参的这种场景,继续用也没事儿,就是性能有所损耗。(不会影响GC,生命周期随着虚拟线程......
  • Java多线程____Executors线程池的使用和架构原理
    1.线程池API类型1.创建一个可重用固定线程数的线程池packagecom.frame.base.thread;importjava.util.concurrent.Executors;importjava.util.concurrent.ExecutorService;/***Java线程:线程池*@authorAdministrator*/publicclassTestExecutors{ publicstati......
  • Java多线程____线程死锁例子
    1:两个任务以相反的顺序申请两个锁,死锁就可能出现2:线程T1获得锁L1,线程T2获得锁L2,然后T1申请获得锁L2,同时T2申请获得锁L1,此时两个线程将要永久阻塞,死锁出现packagecom.zs.test; publicclassDeadLock{ publicstaticStringobjA="objA"; publicstaticStringobjB="ob......
  • Java多线程____生产者与消费者模型
    1.仓库类__:入库和出库的集合 有生产和出货方法packagecom.test.thread;importjava.util.LinkedList;/***@authorAdministrator*仓库类*/publicclassStorage{ //存储集合 privateLinkedList<Object>list=newLinkedList<Object>(); publicvoidruk......
  • Java多线程____线程yield方法介绍
    packagecom.test.thread;publicclassTestYield{ publicstaticvoidmain(String[]args){ TestThreadt1=newTestThread("A_01"); TestThreadt2=newTestThread("B_02"); t1.start(); t2.start(); }}classTestThreadextend......