草庐IT

my_thread_global_end

全部标签

java - 在 Java 中从 main() 中的 Thread 实例上运行 wait()

我正在研究java.lang.Object中wait()的定时版本,并观察到它在两种不同情况下的行为不同。场景一:在Thread中使用run()的默认定义publicstaticvoidmain(String[]args)throwsInterruptedException{Threadt=newThread();t.start();System.out.print("X");synchronized(t){t.wait(10000);}System.out.print("Y");}关于场景1的问题:我在X和Y之间遇到延迟。这是因为我从main调用wait()(即使在t上),因此调用m

java - Jaxb:global binding Double 类型转换使用 XMLAdapter

我有一个定义为xsd:double的元素。如果我尝试将一个值say285放入元素然后我将其编码,我得到285.0的输出......这很好。但是,如果我将一个值放入285292746,我得到2.85292746E8的输出当我编码(marshal)我喜欢这样的东西,使双输出不会转换为带十进制的科学记数法?基本上我想要285292746或2852292746.0000000java.lang.Double.toString()对某些值使用“计算机科学记数法”,这会产生xml问题。我知道给定值的双重表示很好。但事实上值是指数格式,我正在处理的系统接受我的XML但不知道如何处理指数值,这导致我的

java - 如果 Thread.sleep 是静态的,单个线程如何知道它已进入休眠状态?

我对Thread.sleep()方法有点困惑。如果Thread.sleep()是静态方法,两个线程如何知道哪个线程进入休眠状态。例如,在下面的代码中,我有两个三个Threadsmain、t和t1。我总是调用Thread.sleep()。不是t.sleep()。这是否意味着Thread.sleep()使当前线程进入休眠状态?这意味着Thread实例通过调用静态方法自行进入休眠状态。如果t1想让t进入休眠状态怎么办?这不可能是正确的?publicclassThreadInterrupt{publicstaticvoidmain(String[]args)throwsInterruptedE

java - RxJava : Observable and default thread

我有以下代码:Observable.create(newObservableOnSubscribe(){@Overridepublicvoidsubscribe(@NonNullfinalObservableEmitters)throwsException{Threadthread=newThread(newRunnable(){@Overridepublicvoidrun(){s.onNext("1");s.onComplete();}});thread.setName("background-thread-1");thread.start();}}).map(newFunction

java - Spring 安全 : hasAuthority is ignored when configured globally for HttpSecurity

我在带有OAuth2的SpringMVC上有一个RESTAPI。为了支持像hasRole和hasAuthority这样的表达式处理程序,我添加了以下配置:@Configuration@EnableGlobalMethodSecurity(prePostEnabled=true)publicclassMethodSecurityConfigextendsGlobalMethodSecurityConfiguration{@OverrideprotectedMethodSecurityExpressionHandlercreateExpressionHandler(){returnnewO

java - 仅本地图值不存在时才创建并放置一个 map 值,并获取它 : thread-safe implementation

使此代码段线程安全的最佳方法是什么?privatestaticfinalMapMAP=newHashMap();publicstaticBputIfNeededAndGet(Akey){Bvalue=MAP.get(key);if(value==null){value=buildB(...);MAP.put(key,value);}returnvalue;}privatestaticBbuildB(...){//business,canbequitelong}以下是我能想到的几个解决方案:我可以使用ConcurrentHashMap,但如果我很好理解,它只是使原子put和get操作线程

java - 输入/输出流 : End of Stream?

我一直在想:流的结尾是什么?在java.io包中大多数readLine方法的javadoc中,您可以读到“如果到达流的末尾,则返回null”——尽管我实际上从未得到null,因为大多数流(在这种情况下我最常使用的网络流)只是阻止程序执行,直到将某些内容写入远程端的流中有没有办法以实际的非异常抛出方式强制执行这种实际行为?我只是好奇... 最佳答案 想想正在读取的文件。那里有一个流的结尾,文件的结尾。如果你试图阅读更多,你根本做不到。但是,如果您有网络连接,只要等待发送更多数据,就不需要流结束。在文件的情况下,我们知道没有更多数据可读

Java Spring 安全 : 401 Unauthorized for token OAuth2 end point

我的SpringBoot项目中有一个相当基本的设置。我正在尝试设置OAuth2来保护我的API,但我遇到了/oauth/token端点的问题。向我的/oauth/token端点发出POST或GET请求会导致以下响应(带有401Unauthorized状态代码):{"timestamp":"2018-09-17T16:46:59.961+0000","status":401,"error":"Unauthorized","message":"Unauthorized","path":"/oauth/token"}这是我的授权服务器配置。importorg.springframework.

java - PMD 消息 "Avoid using java.lang.ThreadGroup; it is not thread safe"

问题:为什么mavenPMD插件对下面的代码行发出以下警告:警告:Avoidusingjava.lang.ThreadGroup;itisnotthreadsafe代码(第二行):Calendarcal=Calendar.getInstance();java.sql.DateendDate=newjava.sql.Date(cal.getTime().getTime());上下文:我有一个java.sql.Date实例:publicclassXYZServletextendsHttpServlet{@OverrideprotectedvoiddoGet(HttpServletReque

java - Java thread.stop() 是如何工作的?

我实际上正在寻找一种更简单的方法来终止线程,而不管线程在何处运行。但是互联网上的大多数解决方案都指向我使用boolean标志来控制线程的执行,如果我想停止线程然后将boolean变量设置为false。但是如果runnable中的任务是一个LONG线性任务,这意味着该任务不重复怎么办?在那种情况下,创建一个“while”循环来覆盖整个任务block就不是那么容易了。使用Thread.stop真的很诱人,但警告“已弃用”似乎使用起来很危险。我已经阅读了这篇文章WhyAreThread.stop,Thread.suspend,Thread.resumeandRuntime.runFinali