这句是否也是多线程 线程函数里面的呢?如果是那么就会悲剧。一旦有一个线程执行了这句,那么其他线程push_back的数据可能还没上传就没了。
一次性插入大量数据,只能使用循环,如:游标,while 循环语句
下面介绍While 循环插入数据,
SQL 代码如下:
IF OBJECT_ID('dbo.Nums') IS NOT NULL
DROP TABLE dbo.Nums
GO
CREATE TABLE dbo.Nums(n INT NOT NULL PRIMARY KEY)
DECLARE @max AS INT, @rc AS INT
SET @max = 5000000
SET @rc = 1
INSERT INTO Nums VALUES(1)
WHILE @rc * 2 <= @max
BEGIN
INSERT INTO dbo.Nums SELECT n + @rc FROM dbo.Nums
SET @rc = @rc * 2
END
INSERT INTO dbo.Nums SELECT n + @rc FROM dbo.Nums WHERE n + @rc <= @max
--以上函数取自Inside SQL Server 2005: T-SQL Query一书。
INSERT dbo.Sample SELECT n, RAND(CAST(NEWID() AS BINARY(16))) FROM Nums
把存储数据的数据所有的数据结构 换成 线程安全的集合,例如用Vector 而不用 ArrayList 用HashTable 而不用HashMap ,用StringBuilder 而不用StringBuffer多线程共有的函数尽量声明为 synchronized ,复杂的数据交互,在线程与线程的时间间隙里面最好不要调用 Thread.sleep方法,另外数据的传输,组号采用字节流,而不要采用字符流,文件的读取访问最好使用单例模式。
一般是在服务器端加,没有必要在客户端端加
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)