Ich möchte eine Klasse erstellen, die Datentable speichert. Dadurch wird meine Anwendung beim Importieren einer Liste von Details bei jedem Abruf importiert. Daher sollte dies einmal erfolgen. Ich glaube, dass der folgende Code dies tut, aber ich bin mir nicht sicher, ob es sich um thread-safe handelt.
public class BusinessLayerHandler
{
public static DataTable unitTable;
public static DataTable currencyTable;
public static DataTable GetUnitList()
{
//import lists each time the application is run
unitTable = null;
if (unitTable == null)
{
return unitTable = DatabaseHandler.GetUnitList();
}
else
{
return unitTable;
}
}
public static DataTable GetCurrencyList()
{
//import lists each time the application is run
currencyTable = null;
if (currencyTable == null)
{
return currencyTable = DatabaseHandler.GetCurrencyList();
}
else
{
return currencyTable;
}
}
< /code>
Jede Hilfe wird geschätzt, wenn es einen besseren Weg gibt, wie ein DataTable -Data -ATATEBLE -APPERSPRIEBEN wird.public class BusinessLayerHandler
{
private static DataTable unitTable;
private static DataTable currencyTable;
private static readonly object unitTableLock = new object();
private static readonly object currencyTableLock = new object();
public static DataTable GetUnitList()
{
//import lists each time the application is run
//unitTable = null;
lock (unitTableLock)
{
if (unitTable == null)
{
return unitTable = DatabaseHandler.GetUnitList();
}
}
return unitTable;
}
public static DataTable GetCurrencyList()
{
//import lists each time the application is run
lock (currencyTableLock)
{
if (currencyTable == null)
{
return currencyTable = DatabaseHandler.GetCurrencyList();
}
}
return currencyTable;
}
}
Ich möchte eine Klasse erstellen, die Datentable speichert. Dadurch wird meine Anwendung beim [url=viewtopic.php?t=18708]Importieren[/url] einer Liste von Details bei jedem Abruf importiert. Daher sollte dies einmal erfolgen. Ich glaube, dass der folgende Code dies tut, aber ich bin mir nicht sicher, ob es sich um thread-safe handelt.[code]public class BusinessLayerHandler { public static DataTable unitTable; public static DataTable currencyTable;
public static DataTable GetUnitList() { //import lists each time the application is run unitTable = null; if (unitTable == null) { return unitTable = DatabaseHandler.GetUnitList(); } else { return unitTable; } }
public static DataTable GetCurrencyList() { //import lists each time the application is run currencyTable = null; if (currencyTable == null) { return currencyTable = DatabaseHandler.GetCurrencyList(); } else { return currencyTable; } } < /code>
Jede Hilfe wird geschätzt, wenn es einen besseren Weg gibt, wie ein DataTable -Data -ATATEBLE -APPERSPRIEBEN wird.public class BusinessLayerHandler { private static DataTable unitTable; private static DataTable currencyTable;
private static readonly object unitTableLock = new object(); private static readonly object currencyTableLock = new object();
public static DataTable GetUnitList() { //import lists each time the application is run //unitTable = null;
public static DataTable GetCurrencyList() { //import lists each time the application is run lock (currencyTableLock) { if (currencyTable == null) { return currencyTable = DatabaseHandler.GetCurrencyList(); } } return currencyTable; } } [/code]
Aus dem, was ich gelesen habe, hat Python GIL, der sicherstellt, dass nur ein Thread den Python -Code ausführen kann. Ich bin also etwas verwirrt, wenn wir sage sammeln.dequeue ist thread-safe. Wenn...
Da C ++ 11 die Initialisierung funktionierender statischer Variablen ist, ist die Gewinde. Die Variable wird (vermutlich durch einen Mutex) gesperrt und durch den ersten Thread initialisiert, der in...
public class RMIConnect {
public static void main(String[] args) {
try {
// String host = host ;
String host = ip ;
int port = 1999; // Default RMI registry port
Registry registry =...