当前位置:首页 > 编程教程 > java技术文章 > 实现Java线程的取值并返回的方法

关于Java中线程的取值并返回的方法

  • 发布时间:
  • 作者:码农之家
  • 点击:166

这篇文章主要知识点是关于Java、线程、的内容,如果大家想对相关知识点有系统深入的学习,可以参阅以下电子书

JavaScript高级程序设计
  • 类型:JS程序设计大小:23 MB格式:PDF作者:Nicholas C. Zakas
立即下载

实现Java线程的取值并返回的方法

如何让一个线程不断跑起来,并且在取到值的时候能返回值而线程能继续跑呢?

我们都知道可以用Callable接口获得线程的返回值,或者触发事件监听来操作返回值,下面我将介绍另一种方法。

public abstract class Test implements Runnable {
  public String A;
 
  //开启线程
  public void run() {
    while(true) {
      //此处写该方法的逻辑代码
       
      //listen()方法操作取得值A
      listen(A);
       
    }
 
  }
 
  //定义一个抽象方法listen()
  public abstract void listen(String A);
 
}

这样,线程取到值将存放在抽象方法listen()里,并且线程也将一直跑起来而不会停止。

当我们需要用到这个值时,只需要重写listen()方法就可以啦。

public class Main {
  public static void main(String[] args) {
    Thread thread = new Thread(new Test() {
       
      @Override
      public void listen(String A) {
        // TODO Auto-generated method stub
         
      }
    });
    thread.start();
  }
}

以上就是本知识点的全部内容,感谢大家对码农之家的支持。

以上就是本次给大家分享的关于java的全部知识点内容总结,大家还可以在下方相关文章里找到相关文章进一步学习,感谢大家的阅读和支持。

Java 相关电子书
学习笔记
网友NO.883151

详解Java线程中断知识点

下面的这断代码大家应该再熟悉不过了,线程休眠需要捕获或者抛出线程中断异常,也就是你在睡觉的时候突然有个人冲进来把你吵醒了。 try { Thread.sleep(3000);} catch (InterruptedException e) { e.printStackTrace();} 此时线程被打断后,代码会继续运行或者抛出异常结束运行,这并不是我们需要的中断线程的作用。 到底是什么是线程中断? 线程中断即线程运行过程中被其他线程给打断了,它与 stop 最大的区别是:stop 是由系统强制终止线程,而线程中断则是给目标线程发送一个中断信号,如果目标线程没有接收线程中断的信号并结束线程,线程则不会终止,具体是否退出或者执行其他逻辑由目标线程决定。 我们来看下线程中断最重要的 3 个方法,它们都是来自 Thread 类! 1、java.lang.Thread#interrupt 中断目标线程,给目标线程发一个中断信号,线程被打上中断标记。……

网友NO.685581

java线程池工作队列饱和策略代码示例

线程池(Thread Pool) 是并行执行任务收集的实用工具。随着 CPU 引入适合于应用程序并行化的多核体系结构,线程池的作用正日益显现。通过 ThreadPoolExecutor类及其他辅助类,Java 5 引入了这一框架,作为新的并发支持部分。 ThreadPoolExecutor框架灵活且功能强大,它支持特定于用户的配置并提供了相关的挂钩(hook)和饱和策略来处理满队列 Java线程池会将提交的任务先置于工作队列中,在从工作队列中获取(SynchronousQueue直接由生产者提交给工作线程)。那么工作队列就有两种实现策略:无界队列和有界队列。无界队列不存在饱和的问题,但是其问题是当请求持续高负载的话,任务会无脑的加入工作队列,那么很可能导致内存等资源溢出或者耗尽。而有界队列不会带来高负载导致的内存耗尽的问题,但是有引发工作队列已满情况下,新提交的任务如何管理的难……

网友NO.932103

java 中线程等待与通知的实现

java 中线程等待与通知的实现 前言: 关于等待/通知,要记住的关键点是: 必须从同步环境内调用wait()、notify()、notifyAll()方法。线程不能调用对象上等待或通知的方法,除非它拥有那个对象的锁。 wait()、notify()、notifyAll()都是Object的实例方法。与每个对象具有锁一样,每个对象可以有一个线程列表,他们等待来自该信号(通知)。线程通过执行对象上的wait()方法获得这个等待列表。从那时候起,它不再执行任何其他指令,直到调用对象的notify()方法为止。如果多个线程在同一个对象上等待,则将只选择一个线程(不保证以何种顺序)继续执行。如果没有线程等待,则不采取任何特殊操作。 示例代码: package threadwait;public class ThreadA extends Thread{ public int num = 0; public void run(){ synchronized (this){//在此类对象上实现同步,this指代当前对象 for(int i = 0 ; i 3 ; ++i……

网友NO.838698

Java ThreadPoolExecutor 线程池的使用介绍

Executors Executors 是一个Java中的工具类. 提供工厂方法来创建不同类型的线程池. 从上图中也可以看出, Executors的创建线程池的方法, 创建出来的线程池都实现了 ExecutorService 接口. 常用方法有以下几个: newFixedThreadPool(int Threads) : 创建固定数目线程的线程池, 超出的线程会在队列中等待. newCachedThreadPool() : 创建一个可缓存线程池, 如果线程池长度超过处理需要, 可灵活回收空闲线程(60秒), 若无可回收,则新建线程. newSingleThreadExecutor() : 创建一个单线程化的线程池, 它只会用唯一的工作线程来执行任务, 保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行. 如果某一个任务执行出错, 将有另一个线程来继续执行. newScheduledThreadPool(int corePoolSize) : 创建一个支持定时及周期性的任务执行的线程池, 多数情况下可用来替代Timer类. Executors 例子 newCachedThreadPool 线程最大数为 Inte……

<
1
>

Copyright 2018-2020 www.xz577.com 码农之家

版权投诉 / 书籍推广 / 赞助:520161757@qq.com