晚上好,
我想知道如何用信号量替换下面代码中的同步、等待和通知?我必须在哪里创建信号量变量?
import java.util.*;
class Producer
extends Thread
{
private Vector v;
public Producer(Vector v)
{
this.v = v;
}
public void run()
{
String s;
while (true) {
synchronized (v) {
s = "Value"+Math.random();
v.addElement(s);
System.out.println("Producer created "+s);
v.notify();
}
try {
Thread.sleep((int)(100*Math.random()));
} catch (InterruptedException e) {
//nothing
}
}
}
}
class Consumer
extends Thread
{
private Vector v;
public Consumer(Vector v)
{
this.v = v;
}
public void run()
{
while (true) {
synchronized (v) { …Run Code Online (Sandbox Code Playgroud) 我有一个简单的Web应用程序,允许用户上传包含特定数据的2个.csv文件.为了保持数据,我使用了Entity Framework两种不同的数据Import-methods.
第一种进口方法
public void ImportOne(string path)
{
StreamReader sr = new StreamReader(path);
using (var db = new ContextEv("RndContext"))
{
db.Database.ExecuteSqlCommand("DELETE FROM TableA");
db.Database.ExecuteSqlCommand("DELETE FROM TableB");
while (!sr.EndOfStream)
{
string[] data = sr.ReadLine().Split(';');
string houseId = data[0];
House house = new House()
{
HouseId = houseId,
};
House dummy = db.Houses.Find(houseId);
if (!dummy.HouseId.Equals(house.HouseId))
{
db.Houses.Add(house);
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
此行失败:House dummy = db.Houses.Find(houseId);出现以下异常:
其中一个主键值的类型与实体中定义的类型不匹配.有关详细信息,请参阅内部异常.\ r \nParametername:keyValues
InnerException的ErrorContext:
关键字'AS',第1行,第22列
InnerException的ErrorDescription:
查询语法无效.
好吧,我检查了这个类型是否真的存在问题.但是我没有发现任何错误.
关于它的"有趣"的事情是,我在另一个Import-method中使用相同的Find-method,它没有任何异常!
using …Run Code Online (Sandbox Code Playgroud)