「java线程ui」JAVA线程池参数

博主:adminadmin 2022-11-23 03:43:06 61

本篇文章给大家谈谈java线程ui,以及JAVA线程池参数对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

java中如何实现:主线程等待UI输入,然后继续运行?

在你的代码基础上改进了。

package com.sacswing.resource;

import java.awt.Container;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.JButton;

import javax.swing.JFrame;

public class Test extends JFrame {

//同步变量

private static Boolean continueThread = false;

public Test() {

Container container = getContentPane();

JButton btn = new JButton("主线程继续");

//按钮要添加监听,来控制共享数据continueThread

btn.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

continueThread = !continueThread;

}

});

container.add(btn);

}

public static void main(String[] args) {

Test frame = new Test();

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setSize(100, 100);

frame.setVisible(true);

System.out.println("1");

// 这里时要求的代码,要求主线程在这里悬停,直到我按下“主线程继续”按钮,然后才输出“2”

synchronized (continueThread) {

//如果继续线程为false,则执行循环

while (continueThread == false) {

}

}

System.out.println("2");

}

}

Java Swing 的事件调度线程更新UI的问题..真明白的帮解答下,感激涕零。。

我目前手头没有代码,但你说的这种东西我以前做过,程序早就没了。给你个思路,你可以建一个JTable,然后指定它的一列单元格的编辑器为progressbar,然后建立一个输入输出流,读一个大的文件,你可以找电影什么的,从C盘拷到D盘,你可以试试在正常情况下进度条的反应情况,然后加载文件的过程中进度条的变化,这样就明显了。所以你需要界面显示独立于事件处理的线程,就是有单独的线程来专门处理这件事。我现在手里的事儿多,每天只能大致性的回答,没时间写代码。

对你第二个问题,1你看到给它加listener了吗,事实是没有,所以你的说法有误。既然是model,它就是一个基础模型,理解起来就像integer.parseInt()那样,只是做了一种操作而已。

2JAVA里没有指针,你是不是拿c或c++里的那种想法来体验JAVA了,如果是这样你就是错的。JAVA不需要指针,这也是它的简单所在。因为你在使用model的时候它没有报错。

3我想你的误区在于它为什么既能更新,又没有事件监听。那你看看jtextfield,你给它指定setText属性,它的值就自动过来了,你见它加监听行为了吧。每种组件都有它自己的底层实现,你先把它应用好学好再考虑别的也不迟。

另:我感觉你好像学的乱了,一点一点来,思考是好的,但不要较真。

java的UI线程是什么?

就是绘制界面,响应事件的线程,也叫EDT线程。你鼠标拖动窗口大小等等,UI都要更改布局和大小,此时就这个线程在修改控件和布局等。

【Java基础】线程池的原理是什么?

什么是线程池?

总归为:池化技术 ---》数据库连接池 缓存架构 缓存池 线程池 内存池,连接池,这种思想演变成缓存架构技术--- JDK设计思想有千丝万缕的联系

首先我们从最核心的ThreadPoolExecutor类中的方法讲起,然后再讲述它的实现原理,接着给出了它的使用示例,最后讨论了一下如何合理配置线程池的大小。

Java 中的 ThreadPoolExecutor 类

java.uitl.concurrent.ThreadPoolExecutor 类是线程池中最核心的一个类,因此如果要透彻地了解Java 中的线程池,必须先了解这个类。下面我们来看一下 ThreadPoolExecutor 类的具体实现源码。

在 ThreadPoolExecutor 类中提供了四个构造方法:

从上面的代码可以得知,ThreadPoolExecutor 继承了 AbstractExecutorService 类,并提供了四个构造器,事实上,通过观察每个构造器的源码具体实现,发现前面三个构造器都是调用的第四个构造器进行的初始化工作。

下面解释下一下构造器中各个参数的含义:

corePoolSize:核心池的大小,这个参数跟后面讲述的线程池的实现原理有非常大的关系。在创建了线程池后,默认情况下,线程池中并没有任何线程,而是等待有任务到来才创建线程去执行任务,除非调用了prestartAllCoreThreads() 或者 prestartCoreThread()方法,从这 2 个方法的名字就可以看出,是预创建线程的意思,即在没有任务到来之前就创建 corePoolSize 个线程或者一个线程。默认情况下,在创建了线程池后,线程池中的线程数为0,当有任务来之后,就会创建一个线程去执行任务,当线程池中的线程数目达到 corePoolSize 后,就会把到达的任务放到缓存队列当中;

maximumPoolSize:线程池最大线程数,这个参数也是一个非常重要的参数,它表示在线程池中最多能创建多少个线程;

keepAliveTime:表示线程没有任务执行时最多保持多久时间会终止。默认情况下,只有当线程池中的线程数大于 corePoolSize 时,keepAliveTime 才会起作用,直到线程池中的线程数不大于 corePoolSize,即当线程池中的线程数大于 corePoolSize 时,如果一个线程空闲的时间达到 keepAliveTime,则会终止,直到线程池中的线程数不超过 corePoolSize。但是如果调用了 allowCoreThreadTimeOut(boolean) 方法,在线程池中的线程数不大于 corePoolSize 时,keepAliveTime 参数也会起作用,直到线程池中的线程数为0;

unit:参数 keepAliveTime 的时间单位,有 7 种取值,在 TimeUnit 类中有 7 种静态属性:

workQueue:一个阻塞队列,用来存储等待执行的任务,这个参数的选择也很重要,会对线程池的运行过程产生重大影响,一般来说,这里的阻塞队列有以下几种选择:

ArrayBlockingQueue 和 PriorityBlockingQueue 使用较少,一般使用 LinkedBlockingQueue 和 Synchronous。线程池的排队策略与 BlockingQueue 有关。

threadFactory:线程工厂,主要用来创建线程;

handler:表示当拒绝处理任务时的策略,有以下四种取值:

具体参数的配置与线程池的关系将在下一节讲述。

从上面给出的 ThreadPoolExecutor 类的代码可以知道,ThreadPoolExecutor 继承了AbstractExecutorService,我们来看一下 AbstractExecutorService 的实现:

AbstractExecutorService 是一个抽象类,它实现了 ExecutorService 接口。

我们接着看 ExecutorService 接口的实现:

而 ExecutorService 又是继承了 Executor 接口,我们看一下 Executor 接口的实现:

关于java线程ui和JAVA线程池参数的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-11-23,除非注明,否则均为首码项目网原创文章,转载请注明出处。