Um objeto Connection normalmente não é thread-safe (você não é obrigado a implementar um driver JDBC como “thread-safe”), mas um colega meu descobriu isso da pior maneira possível:
Ele tinha um objeto Connection e resolveu compartilhá-lo entre duas threads para que um determinado serviço fosse efetuado mais rapidamente, já que tinha uma máquina dual-core. Primeiramente, testou o programa em uma máquina com um processador simples; e tudo funcionou maravilhosamente.
A seguir, foi testar o programa em uma máquina dual-core; aí começou a ter problemas muito esquisitos. (Como inserir um dado em uma tabela, e obter a contagem dos registros em outra thread, como se o dado não tivesse sido inserido).
Ele resolveu o problema dele com uma conexão separada para cada thread. Como o HSQLDB processa todas as conexões em uma única thread, não tem problemas em si (mas também não aproveita adequadamente os vários processadores); o problema é de seu driver JDBC.
Hslqdb: objeto Connection não é thread-safe
T
2 Respostas
T
Nem fez isso. Foi pelo método da força bruta (dentro da thread, criar a conexão, e deixá-la em uma variável local.).
Criado 24 de agosto de 2006
Ultima resposta 24 de ago. de 2006
Respostas 2
Participantes 2
Alura POO: o que é programação orientada a objetos? Aprenda os conceitos básicos da programação orientada a objetos, como classes, objetos, herança, encapsulamento e polimorfismo, com exemplos.
Casa do Codigo Inteligencia Artificial e ChatGPT: Da revolucao dos... Por Fabricio Carraro — Casa do Codigo