我目前正从EntityManager查询中获取连接超时错误.是否可以为这些设置超时?
persistence.xml中
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="CallPU" transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<class>call.structure.Task</class>
<class>call.structure.Installation</class>
<class>call.structure.Contents</class>
<class>call.structure.Recipient</class>
<class>call.structure.CallTask</class>
<class>call.structure.SmsTask</class>
<class>call.structure.EmailTask</class>
<class>call.security.User</class>
<class>call.structure.content.Content</class>
<class>call.structure.content.RecordContent</class>
<class>call.structure.content.WaitContent</class>
<class>call.structure.content.TextContent</class>
<class>call.structure.content.VariableContent</class>
<class>call.structure.content.SoundContent</class>
<class>call.structure.content.SubjectContent</class>
<class>call.structure.content.FileContent</class>
<class>call.structure.Bounce</class>
<properties>
<property name="javax.persistence.jdbc.url" value="jdbc:oracle:thin:@127.0.0.1:1521:TEST"/>
<property name="javax.persistence.jdbc.password" value="userpassword"/>
<property name="javax.persistence.jdbc.driver" value="oracle.jdbc.OracleDriver"/>
<property name="javax.persistence.jdbc.user" value="username"/>
</properties>
</persistence-unit>
</persistence>
Run Code Online (Sandbox Code Playgroud)
代码在我的线程的run函数中超时:
private class TaskDB extends Thread {
private final long WAITING_TIME = 20000L;
@Override
public void run() {
Set<SmsTask> remove = SMSManager.this.getRemoveTask();
Set<SmsTask> normal = SMSManager.this.getNormalTask();
try {
while(true){
EntityManager em = …Run Code Online (Sandbox Code Playgroud) 在C ++中,建议使用lock_guard,因为它可以确保在销毁对象时将互斥体解锁。
有没有办法在C中实现相同的功能?还是我们必须手动实现它:
锁定互斥
在全局变量上做某事
解锁互斥锁
#include <stdio.h>
#include <threads.h>
long long x = 0;
mtx_t m;
static void do1() {
mtx_lock(&m);
for(int i = 0; i < 100; i++){
x = x +1;
}
mtx_unlock(&m);
}
static void do2() {
mtx_lock(&m);
x = x / 3;
mtx_unlock(&m);
}
int main(int argc, char *argv[])
{
mtx_init(&m, mtx_plain);
thrd_t thr1;
thrd_t thr2;
thrd_create(&thr1, do1, 0);
thrd_create(&thr2, do2, 0);
thrd_join(&thr2, 0);
thrd_join(&thr1, 0);
return 0;
}
Run Code Online (Sandbox Code Playgroud)