日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java cassandra连接池_java操作cassandra(连接池)

發布時間:2025/3/11 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java cassandra连接池_java操作cassandra(连接池) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

package com.chu.cassandratest;

import java.util.concurrent.Semaphore;

import java.util.concurrent.TimeUnit;

import org.apache.thrift.transport.TTransportException;

/**

* cassandra連接池

* @author chuer

* @date 2014年12月31日 上午10:05:26

*/

public class CassandraConnectionPool {

Semaphore access = null;

CassandraConnection[] pool = null;

boolean[] used = null;

int round = 0;

int conn_num = 0;

public CassandraConnectionPool(int conn_num) {

this.conn_num = conn_num;

init();

}

private void init() {

access = new Semaphore(conn_num);//有幾個連接就允許有幾個線程同時訪問連接池。

pool = new CassandraConnection[conn_num];

used = new boolean[conn_num];

for (int i = 0; i < pool.length; i++) {

try {

pool[i] = new CassandraConnection(CassandraConnection.HOST);

} catch (TTransportException e) {

e.printStackTrace();

}

}

}

public CassandraConnection getConn() throws InterruptedException {

if (access.tryAcquire(3, TimeUnit.SECONDS)) {

synchronized (this) {

for (int i = 0; i < pool.length; i++) {

if (!used[i]) {

used[i] = true;

return pool[i];

}

}

}

}

throw new RuntimeException("all client is too busy");

}

public void releaseConn(CassandraConnection client) {

boolean released = false;

synchronized (this) {

for (int i = 0; i < pool.length; i++) {

if (client == pool[i] && used[i]) {

used[i] = false;

released = true;

break;

}

}

}

if (released)

access.release();

}

public void shutdownPool() {

if (pool != null) {

for (int i = 0; i < pool.length; i++){

pool[i].close();

}

}

}

}

本文代碼,摘抄修改于網上的另一篇文章,網絡在哪里了,恕不能注明出處。

package com.chu.cassandratest;

import org.apache.cassandra.thrift.Cassandra;

import org.apache.thrift.protocol.TBinaryProtocol;

import org.apache.thrift.protocol.TProtocol;

import org.apache.thrift.transport.TSocket;

import org.apache.thrift.transport.TTransport;

import org.apache.thrift.transport.TTransportException;

/**

* cassandra連接

* @author chuer

* @date 2014年12月31日 上午10:09:47

*/

public class CassandraConnection {

private Cassandra.Client client = null;

private TTransport tr = null;

private String host = null;

public final static String HOST = "127.0.0.1";

public CassandraConnection(String host) throws TTransportException {

this.host = host;

this.connect(host);

}

private synchronized void connect(String host) throws TTransportException {

tr = new TSocket(host, 9160);

TProtocol proto = new TBinaryProtocol(tr);

client = new Cassandra.Client(proto);

tr.open();

}

public synchronized void close() {

if (tr != null && tr.isOpen())

tr.close();

}

public Cassandra.Client getClient() {

return client;

}

public String getHost() {

return host;

}

}

package com.chu.cassandratest;

import org.apache.cassandra.thrift.Cassandra.Client;

public class TestCassandraPool {

public static void main(String[] args)throws Exception {

CassandraConnectionPool pool = new CassandraConnectionPool(10);

CassandraConnection conn1 = pool.getConn();

CassandraConnection conn2 = pool.getConn();

CassandraConnection conn3 = pool.getConn();

CassandraConnection conn4 = pool.getConn();

CassandraConnection conn5 = pool.getConn();

Client client1 = conn1.getClient();

Client client2 = conn2.getClient();

Client client3 = conn3.getClient();

Client client4 = conn4.getClient();

Client client5 = conn5.getClient();

System.out.println(client1);

System.out.println(client2);

System.out.println(client3);

System.out.println(client4);

System.out.println(client5);

pool.releaseConn(conn1);

pool.releaseConn(conn2);

pool.releaseConn(conn3);

pool.releaseConn(conn4);

pool.releaseConn(conn5);

}

}

輸出如下:

org.apache.cassandra.thrift.Cassandra$Client@1c160cb

org.apache.cassandra.thrift.Cassandra$Client@b9b67b

org.apache.cassandra.thrift.Cassandra$Client@7b4ed7

org.apache.cassandra.thrift.Cassandra$Client@17535b6

org.apache.cassandra.thrift.Cassandra$Client@1979eb

總結

以上是生活随笔為你收集整理的java cassandra连接池_java操作cassandra(连接池)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。