草庐IT

thread-confinement

全部标签

java - SwingUtilites : how to return values from another thread in Java?

我正在尝试用Java开发一个应用程序。为了使Swing正常工作,我这样做了:publicstaticvoidmain(String[]array){StringouterInput;SwingUtilities.invokeLater(newRunnable(){@Overridepublicvoidrun(){//Iwantthisstringinput.Stringinput=JOptionPane.showInputDialog(null,"Stop?",JOptionPane.QUESTION_MESSAGE);});//HowcanIgetthisinputvalueinSt

java - 为什么 Thread 类不是最终的?你为什么要扩展一个线程?

我得到这个作为面试问题。whyisn'tThreadclassfinal?WhywouldyouextendaThreadever?我想不出真实世界的用例。 最佳答案 来自Oracle'sdocumentation:Therearetwowaystocreateanewthreadofexecution.OneistodeclareaclasstobeasubclassofThread.ThissubclassshouldoverridetherunmethodofclassThread.Theotherwaytocreateath

java.lang.OutOfMemoryError : unable to create new native thread 错误

我看到了这样的评论oneplaceihaveseenthisproblemisifyoukeepcreatingthreads,andinsteadofcallingstart(),callrun()directlyonthethreadobject.Thiswillresultinthethreadobjectnotgettingdereferenced...Soaftersometimethemessageunabletocreatenewnativethreadcomesup关于SunJavaForums在我的应用程序中,最初我们计划使用线程,但后来我们决定不再需要,所以我们只调

java - 为什么我应该使用 Runnable 而不是 Thread?

这个问题在这里已经有了答案:"implementsRunnable"vs"extendsThread"inJava(43个回答)关闭7年前。我只是学习线程的理论。还有Thread和Runnable。classAextendsThread{publicvoidrun(){while(true){System.out.println("Hi");}}}classBimplementsRunnable{publicvoidrun(){System.out.println("Hi");}}Thread有丰富的API,为什么我要使用Runnable而不是Thread?谢谢。

java - spring hibernate 5 错误已经值 [org.springframework.orm.hibernate5.SessionHolder for key bind to thread

我刚刚升级到hibernate5,在尝试使用SpringHibernate事务管理器获取CurrentSession时遇到以下错误org.springframework.orm.hibernate5.HibernateTransactionManager这是错误的完整堆栈跟踪java.lang.IllegalStateException:Alreadyvalue[org.springframework.orm.hibernate5.SessionHolder@c05f59]forkey[org.hibernate.internal.SessionFactoryImpl@f0db1]bo

java - Thread.sleep() 内部是如何工作的

假设我有一个线程T,它持有一个资源R。如果我在当前线程(即T)上调用Thread.sleep(),它会在转到之前释放资源R(让其他线程使用它)吗?睡不睡?或者它会持有该资源,当它醒来时它会再次使用资源R并在完成工作后释放它? 最佳答案 首先Thread.sleep()是Blocking库方法。线程可能会阻塞或暂停,原因有多种:WAITINGI/O完成、等待获取锁、等待从Thread.sleep唤醒或等待另一个线程中的计算结果。当线程阻塞时,它通常被挂起并置于阻塞线程状态之一。因此,当您调用sleep()方法时,Thread离开CPU

java - 为什么 java.lang.Thread 在启动时不调用其显式 java.lang.Runnable 的 run() 方法?

Javadocs说明如果我们在创建新线程时提供一个Runnabletarget,该线程的.start()将运行run()方法提供的可运行。如果是这样的话,这个测试代码不应该打印“a”(而不是打印“b”)吗?publicclasstest{publicstaticvoidmain(String[]args){Runnabler=newRunnable(){@Overridepublicvoidrun(){System.out.println("a");}};Threadt=newThread(r){@Overridepublicvoidrun(){System.out.println("

java - 通过扩展 Thread 类来创建 Thread

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Java:“implementsRunnable”vs.“extendsThread”Java提供了两种创建Thread类的选项,即通过实现Runnable或通过扩展Thread类。我知道实现Runnable可能有很多原因,但不确定扩展Thread类以创建自己的Thread类的场景是什么?能否请您提供扩展Thread似乎可行或更好的选择或优势的场景...有一个Question在线程上,但这没有回答我的问题

java - java.lang.Thread 本身是线程安全的类吗?

我想知道我们是否需要外部同步才能使用java.lang.Thread中的方法?例如,我们可以调用方法t1.isAlive()吗?从任何线程没有外部同步并期望它返回:trueift1hasalreadybeenstarted,falseotherwise.或者调用java.lang.Thread中的方法需要外部同步吗??publicstaticvoidmain(Stringargs[]){finaljava.lang.Threadt1=newjava.lang.Thread(newjava.lang.Runnable(){@Overridepublicvoidrun(){while(tr

java - Thread.holdsLock() 和锁粗化

假设我有2个相邻的synchronizedblock,它们之间有一个Thread.holdsLock()调用:finalObjectlock=newObject();//...synchronized(lock){//dostuff}if(Thread.holdsLock(lock)){thrownewIllegalStateException();}synchronized(lock){//domorestuff}现在,如果JVM在某个时候决定coarsen会怎样?锁定并合并上面的synchronizedblock?Thread.holdsLock()调用是否仍会返回false,或者