对于想了解在Java中处理InterruptedException的读者,本文将提供新的信息,我们将详细介绍javainterruptedexception,并且为您提供关于C3P0:java.lan
对于想了解在Java中处理InterruptedException的读者,本文将提供新的信息,我们将详细介绍java interruptedexception,并且为您提供关于C3P0:java.lang.InterruptedException: sleep interrupted、Connection; nested exception is java.sql.SQLException: interrupt,这是什么问题啊?、HDFS 上传文件报错 java.lang.InterruptedException、InterruptedException: sleep interrupted at java.lang.Thread.sleep的有价值信息。
本文目录一览:- 在Java中处理InterruptedException(java interruptedexception)
- C3P0:java.lang.InterruptedException: sleep interrupted
- Connection; nested exception is java.sql.SQLException: interrupt,这是什么问题啊?
- HDFS 上传文件报错 java.lang.InterruptedException
- InterruptedException: sleep interrupted at java.lang.Thread.sleep
在Java中处理InterruptedException(java interruptedexception)
以下处理方式有什么区别InterruptedException
?最好的方法是什么?
try{ //...} catch(InterruptedException e) { Thread.currentThread().interrupt(); }
要么
try{ //...} catch(InterruptedException e) { throw new RuntimeException(e);}
编辑:我也想知道这两种情况在哪些情况下使用。
答案1
小编典典以下处理InterruptedException
的方式之间有什么区别?最好的方法是什么?
你可能会问这个问题,因为你已经调用了throw
方法InterruptedException
。
首先,你应该throws InterruptedException
了解它的含义:方法签名的一部分以及调用你正在调用的方法的可能结果。因此,首先要包含一个事实,即an InterruptedException
是方法调用的完全有效结果。
现在,如果你正在调用的方法抛出此类异常,那么你的方法应该怎么做?你可以通过考虑以下因素找出答案:
对于你要实现的方法抛出异常有意义InterruptedException
吗?换句话说,InterruptedException
调用你的方法是否明智?
如果是,那么throws InterruptedException
应当成为你的方法签名,你应该让异常繁殖(即完全不抓住它)。
示例:你的方法等待网络中的值来完成计算并返回结果。如果阻塞的网络调用抛出InterruptedException
你的方法将无法以正常方式完成计算。你让InterruptedException
传播。
int computeSum(Server server) throws InterruptedException { // Any InterruptedException thrown below is propagated int a = server.getValueA(); int b = server.getValueB(); return a + b;}
如果为no,则不应使用声明你的方法,throws InterruptedException
并且(必须!)应捕获异常。现在,在这种情况下要牢记两件事:
- 有人打断了你的线程。有人可能想取消该操作,优雅地终止程序或执行其他操作。你应该对那个人彬彬有礼,并毫不费力地从方法中返回。
- 即使在线程被中断的情况下,即使你的方法可以设法产生合理的返回值,InterruptedException也可能仍然很重要。特别是,调用你的方法的代码可能会对执行方法期间是否发生中断感兴趣。因此,你应该通过设置中断标志来记录发生中断的事实:
Thread.currentThread().interrupt()
示例:用户要求打印两个值的总和。Failed to compute sum
如果无法计算总和,则打印“ ”是可以接受的(并且比使程序由于栈跟踪而崩溃更容易InterruptedException
)。换句话说,使用声明此方法没有任何意义throws InterruptedException
。
void printSum(Server server) { try { int sum = computeSum(server); System.out.println("Sum: " + sum); } catch (InterruptedException e) { Thread.currentThread().interrupt(); // set interrupt flag System.out.println("Failed to compute sum"); }}
到现在为止应该很清楚,只是做throw new RuntimeException(e)一个坏主意。呼叫者不太礼貌。你可以发明一个新的运行时异常,但根本原因(有人希望线程停止执行)可能会丢失。
其他例子:
实现Runnable
:你可能已经发现,的签名Runnable.run
不允许重新抛出InterruptedExceptions
。好吧,你已经签署了实施计划Runnable
,这意味着你已经注册了对“可能”的处理InterruptedExceptions。选择其他界面(例如)Callable
,或按照上面的第二种方法。
呼叫Thread.sleep
:你正在尝试读取文件,而规范说你应该尝试10次,中间间隔1秒。你打电话Thread.sleep(1000)
。因此,你需要处理InterruptedException
。对于这样的方法tryToReadFile,说“如果我被打断了,我将无法完成尝试读取文件的动作”是很有意义的。换句话说,该方法抛出异常是有意义的InterruptedExceptions
。
String tryToReadFile(File f) throws InterruptedException { for (int i = 0; i < 10; i++) { if (f.exists()) return readFile(f); Thread.sleep(1000); } return null;}
C3P0:java.lang.InterruptedException: sleep interrupted
好好的就报异常了~~
警告: com.mchange.v2.resourcepool.BasicResourcePool@8fce95 -- Thread unexpectedly interrupted while performing an acquisition attempt. java.lang.InterruptedException: sleep interrupted at java.lang.Thread.sleep(Native Method) at com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1805) at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)
Connection; nested exception is java.sql.SQLException: interrupt,这是什么问题啊?
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException:
### Error updating database. Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is java.sql.SQLException: interrupt
### Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is java.sql.SQLException: interrupt
at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:77)
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:446)
at com.sun.proxy.$Proxy100.insert(Unknown Source)
at org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:278)
at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:58)
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:59)
at com.sun.proxy.$Proxy108.insert(Unknown Source)
at com.hacker.resaleclient.service.impl.OrderslocalServiceImpl.uploadOrders(OrderslocalServiceImpl.java:81)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.netflix.hystrix.contrib.javanica.command.MethodExecutionAction.execute(MethodExecutionAction.java:116)
at com.netflix.hystrix.contrib.javanica.command.MethodExecutionAction.executeWithArgs(MethodExecutionAction.java:93)
at com.netflix.hystrix.contrib.javanica.command.MethodExecutionAction.execute(MethodExecutionAction.java:78)
at com.netflix.hystrix.contrib.javanica.command.GenericCommand$1.execute(GenericCommand.java:48)
at com.netflix.hystrix.contrib.javanica.command.AbstractHystrixCommand.process(AbstractHystrixCommand.java:145)
at com.netflix.hystrix.contrib.javanica.command.GenericCommand.run(GenericCommand.java:45)
at com.netflix.hystrix.HystrixCommand$2.call(HystrixCommand.java:302)
at com.netflix.hystrix.HystrixCommand$2.call(HystrixCommand.java:298)
at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:46)
at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:35)
at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48)
at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)
at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48)
at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)
at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48)
at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)
at rx.Observable.unsafeSubscribe(Observable.java:10151)
at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:51)
at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:35)
at rx.Observable.unsafeSubscribe(Observable.java:10151)
at rx.internal.operators.OnSubscribeDoOnEach.call(OnSubscribeDoOnEach.java:41)
at rx.internal.operators.OnSubscribeDoOnEach.call(OnSubscribeDoOnEach.java:30)
at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48)
at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)
at rx.Observable.unsafeSubscribe(Observable.java:10151)
at rx.internal.operators.OperatorSubscribeOn$1.call(OperatorSubscribeOn.java:94)
at com.netflix.hystrix.strategy.concurrency.HystrixContexSchedulerAction$1.call(HystrixContexSchedulerAction.java:56)
at com.netflix.hystrix.strategy.concurrency.HystrixContexSchedulerAction$1.call(HystrixContexSchedulerAction.java:47)
at com.netflix.hystrix.strategy.concurrency.HystrixContexSchedulerAction.call(HystrixContexSchedulerAction.java:69)
at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:55)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: org.apache.ibatis.exceptions.PersistenceException:
### Error updating database. Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is java.sql.SQLException: interrupt
### Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is java.sql.SQLException: interrupt
at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30)
at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:200)
at org.apache.ibatis.session.defaults.DefaultSqlSession.insert(DefaultSqlSession.java:185)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:433)
... 45 more
Caused by: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is java.sql.SQLException: interrupt
at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:80)
at org.mybatis.spring.transaction.SpringManagedTransaction.openConnection(SpringManagedTransaction.java:82)
at org.mybatis.spring.transaction.SpringManagedTransaction.getConnection(SpringManagedTransaction.java:68)
at org.apache.ibatis.executor.BaseExecutor.getConnection(BaseExecutor.java:338)
at org.apache.ibatis.executor.ReuseExecutor.prepareStatement(ReuseExecutor.java:88)
at org.apache.ibatis.executor.ReuseExecutor.doUpdate(ReuseExecutor.java:51)
at org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:117)
at org.apache.ibatis.executor.CachingExecutor.update(CachingExecutor.java:76)
at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:198)
... 51 more
Caused by: java.sql.SQLException: interrupt
at com.alibaba.druid.pool.DruidDataSource.getConnectionInternal(DruidDataSource.java:1405)
at com.alibaba.druid.pool.DruidDataSource.getConnectionDirect(DruidDataSource.java:1248)
at com.alibaba.druid.filter.FilterChainImpl.dataSource_connect(FilterChainImpl.java:4619)
at com.alibaba.druid.filter.stat.StatFilter.dataSource_getConnection(StatFilter.java:680)
at com.alibaba.druid.filter.FilterChainImpl.dataSource_connect(FilterChainImpl.java:4615)
at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:1226)
at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:1218)
at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:90)
at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:111)
at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:77)
... 59 more
Caused by: java.lang.InterruptedException
at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireInterruptibly(AbstractQueuedSynchronizer.java:1220)
at java.util.concurrent.locks.ReentrantLock.lockInterruptibly(ReentrantLock.java:335)
at com.alibaba.druid.pool.DruidDataSource.getConnectionInternal(DruidDataSource.java:1402)
... 68 more
HDFS 上传文件报错 java.lang.InterruptedException
使用 hdfs 上传文件时报错,
java.lang.InterruptedException
at java.lang.Object.wait(Native Method)
at java.lang.Thread.join(Thread.java:1252)
at java.lang.Thread.join(Thread.java:1326)
at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.closeResponder(DFSOutputStream.java:969)
at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.endBlock(DFSOutputStream.java:707)
at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.run(DFSOutputStream.java:896)
原来是 input 目录没有按照官网:
$ .bin/hdfs dfs -mkdir /user
$ .bin/hdfs dfs -mkdir /user/
于是重新创建目录:
$ .bin/hdfs dfs -mkdir -p /user/input
$ .bin/hdfs dfs -put etc/hadoop /user/input
InterruptedException: sleep interrupted at java.lang.Thread.sleep
scheduler.JobScheduler: Added jobs for time 1591076608000 ms
20/06/02 13:43:28 ERROR logging.DriverLogger$DfsAsyncWriter: Failed writing driver logs to dfs
java.io.InterruptedIOException: Retry interrupted
at org.apache.hadoop.io.retry.RetryInvocationHandler$Call.processWaitTimeAndRetryInfo(RetryInvocationHandler.java:136)
at org.apache.hadoop.io.retry.RetryInvocationHandler$Call.invokeOnce(RetryInvocationHandler.java:107)
at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:359)
at com.sun.proxy.$Proxy13.getAdditionalDatanode(Unknown Source)
at org.apache.hadoop.hdfs.DataStreamer.addDatanode2ExistingPipeline(DataStreamer.java:1362)
at org.apache.hadoop.hdfs.DataStreamer.handleDatanodeReplacement(DataStreamer.java:1598)
at org.apache.hadoop.hdfs.DataStreamer.setupPipelineInternal(DataStreamer.java:1499)
at org.apache.hadoop.hdfs.DataStreamer.setupPipelineForAppendOrRecovery(DataStreamer.java:1481)
at org.apache.hadoop.hdfs.DataStreamer.processDatanodeOrExternalError(DataStreamer.java:1256)
at org.apache.hadoop.hdfs.DataStreamer.run(DataStreamer.java:667)
Caused by: java.lang.InterruptedException: sleep interrupted
at java.lang.Thread.sleep(Native Method)
at org.apache.hadoop.io.retry.RetryInvocationHandler$Call.processWaitTimeAndRetryInfo(RetryInvocationHandler.java:130)
... 9 more
我们今天的关于在Java中处理InterruptedException和java interruptedexception的分享已经告一段落,感谢您的关注,如果您想了解更多关于C3P0:java.lang.InterruptedException: sleep interrupted、Connection; nested exception is java.sql.SQLException: interrupt,这是什么问题啊?、HDFS 上传文件报错 java.lang.InterruptedException、InterruptedException: sleep interrupted at java.lang.Thread.sleep的相关信息,请在本站查询。
本文标签: