为什么COMMIT在执行立即后解决了问题?(Why COMMIT resolved the issue after execute immediate?)
BEGIN EXECUTE IMMEDIATE 'ALTER SESSION SET SKIP_UNUSABLE_INDEXES = TRUE'; EXECUTE IMMEDIATE 'ALTER SESSION DISABLE PARALLEL DML' ; END; /
在3个oracle服务器中的1个中获得跟随错误。 oracle:11.2.0.4
ora 12841无法在事务中更改会话并行DML状态
但是在添加COMMIT后系统工作正常
BEGIN EXECUTE IMMEDIATE 'ALTER SESSION SET SKIP_UNUSABLE_INDEXES = TRUE'; COMMIT; EXECUTE IMMEDIATE 'ALTER SESSION DISABLE PARALLEL DML' ; END; /
添加COMMIT后为什么没有看到这个问题?
BEGIN EXECUTE IMMEDIATE 'ALTER SESSION SET SKIP_UNUSABLE_INDEXES = TRUE'; EXECUTE IMMEDIATE 'ALTER SESSION DISABLE PARALLEL DML' ; END; /
getting following error in 1 out of 3 oracle servers. oracle : 11.2.0.4
ora 12841 cannot alter the session parallel DML state within a transaction
But the system worked fine after adding COMMIT
BEGIN EXECUTE IMMEDIATE 'ALTER SESSION SET SKIP_UNUSABLE_INDEXES = TRUE'; COMMIT; EXECUTE IMMEDIATE 'ALTER SESSION DISABLE PARALLEL DML' ; END; /
Why that issue not seen after adding COMMIT?
原文:https://stackoverflow.com/questions/29458076
最满意答案
我听说
RunOnUiThread
方法将一个runnable
(RunOnUiThread
的{}块)发布到UI线程的handler
。 然后UI线程将在不忙时执行runnable.run()
方法。 如你所知,UI 必须有一段时间让我们不忙,因为如果没有,它会导致系统显示ANR(应用程序没有响应)消息(甚至当UI线程尝试运行耗时时它会抛出Exception
(滞后)工作,如网络:))。** edit **这是一个java代码,向您展示
runOnUiThread
工作原理。 引自此博客(韩文)@Override public final void runOnUiThread(Runnable action) { if (Thread.currentThread() !=mUiThread) { mHandler.post(action); } else { action.run(); } }
PS我不是kotlin的出口,但我希望我的回答对你有帮助。 抱歉我的英语不好。
I heard that
RunOnUiThread
method posts arunnable
( the {} block in kotlin) to thehandler
of the UI thread. Then the UI thread will execute therunnable.run()
method when it is not busy. As you know there must be a time when the UI thread us not busy, because it will cause the system to show ANR(applicafion not responding) message if not (And even it throwsException
s when the UI thread tries to run time-consuming(lagging) jobs like networking :)).**edit ** Here's a java code that shows you how
runOnUiThread
works. Cited from this blog (Korean)@Override public final void runOnUiThread(Runnable action) { if (Thread.currentThread() !=mUiThread) { mHandler.post(action); } else { action.run(); } }
P.S. I am not an export in kotlin, but I hope my answer helped you.
相关问答
更多-
你有几种方法。 最简单的方法是使用Activity.runOnUiThread()方法(有关详细信息,请参阅此处 )。 你也可以使用Handler来实现这一点,它可以互相连接两个不同的Thread 。 您可以在UI线程中定义Handler ,将其传递给处理程序,并使用它将消息发送到UI Thread 。 这里可以找到一个很好的例子。 您还可以使用本地BroadcastReceiver 。 您只需定义要处理数据的接收器(因此,UI线程),然后在此处处理您想要的任何内容。 这是一个很好的例子。 后者基于Inte ...
-
在UiThread上的asyntask中的Android while循环[关闭](Android while loop in asyntask on UiThread [closed])[2024-02-11]
我认为你可以做的是,在doInBackground()你需要调用publishProgress() ,这将导致onProgrssUpdate()的回调,在onProgressUpdate() ,你可以使onProgrssUpdate()不可见并使下一个imageView可见。 I think what you can do is, in doInBackground() you need to call publishProgress() that will result in a callback to ... -
像这样传递活动上下文 alertDialog = new AlertDialog.Builder(YourActivityName.this).create(); 如果要传递应用程序上下文,请为您的应用程序使用app comapact主题。 这是在styles.xml文件中明确定义的 但是你需要在onProgressUpdate()方法中显示对话框。 你不需要运行ui线程。 当异步任务已经有一个方法来显示ui上的一些输出。 pass activity context here like this aler ...
-
为什么JPopupMenu在渲染之前需要2次UIThread传递?(Why does JPopupMenu take 2 passes of UIThread before rendering?)[2023-01-15]
只要我记得它,Swing在显示窗口时有“延迟”,这可能与操作系统实现的帧之间的时间以及本机消息和事件队列的连接有关,但这是纯粹的观察 我带了你的代码,只需将框架的创建包装到EventQueue.invokeLater就能得到类似的行为 根据系统和配置的不同,您将在不同的系统上获得不同的结果 导致窗口在第一次传递中呈现的事件是什么? 我所做的就是拿你的代码并将创建包装在EventQueue.invokeLater ,例如...... import java.awt.Dimension; import java ... -
UIThread是您的应用程序的主要执行线程。 这是您的大多数应用程序代码运行的地方。 在此线程中创建了所有应用程序组件(活动,服务,ContentProvider,BroadcastReceivers),并且在此线程中执行对这些组件的任何系统调用。 例如,假设你的应用程序是一个Activity类。 那么所有的生命周期方法和大部分的事件处理代码都在这个UIThread中运行。 这些是诸如onCreate , onPause , onDestroy , onClick等的方法。此外,这是UI的所有更新。 任何 ...
-
如果块为真,则javascript程序的其他块总是执行(Else block of javascript program always executes even If block is true)[2022-04-12]
加break; 到你的if语句,所以循环停止评估。 否则,只有最后一个结果才会更新HTML。 Add break; to your if statement, so the loop stops evaluating. Otherwise, only the last result will update the HTML. -
@UiThread前/后执行(@UiThread pre/post Execute)[2021-09-21]
没有回调方法来处理这个问题。 但是你可以通过在@Background注释方法的开头和结尾处调用方法来获得相同的结果(你说@UIThread但我希望这是一个错误:))。 示例: @Background void longRunningProcess() { longRunningProcessStarted(); //... longRunningProcessEnded(); } @UiThread void longRunningProcessStarted() { } @U ... -
如何将AsyncTask更改为@background和@UiThread(how to change AsyncTask to @background and @UiThread)[2022-01-05]
你可以像这样转换它: @Click void button1(View view) { startProcess(); } void startProcess() { if(progressBar !=null) // progressBar should be a field in your Activity / Fragment progressBar.setVisibility(ProgressBar.VISIBLE); button1.setEnabled(false) ... -
一个很好的方法是使用内置的Looper类。 Looper是支持Android UI线程的消息排队系统,您也可以将它与自己的线程一起使用。 它的设计方式有什么好处,它创建了非常少的垃圾收集负载(取决于你使用的参数类型,它可以是无)。 我正在写这个写意,所以你不得不破解它以使它工作,但这里最终看起来像: class LooperThread extends Thread { private static final int MSG_TYPE_OUTPUT_DATA = 0; private Ha ...
-
我听说RunOnUiThread方法将一个runnable ( RunOnUiThread的{}块)发布到UI线程的handler 。 然后UI线程将在不忙时执行runnable.run()方法。 如你所知,UI 必须有一段时间让我们不忙,因为如果没有,它会导致系统显示ANR(应用程序没有响应)消息(甚至当UI线程尝试运行耗时时它会抛出Exception (滞后)工作,如网络:))。 ** edit **这是一个java代码,向您展示runOnUiThread工作原理。 引自此博客(韩文) @Overrid ...