vim /etc/hostname
月度归档:2017年11月
kurento录像目录配置
如果提示ipv4映射失败,则重启vmware.
sudo docker run --name kms -p 8888:8888 -v /home/abc/waypalers.cn/kms:/tmp -d kurento/kurento-media-server
rails数据库配置获取
获取数据库的配置
Waypal::Application.config.database_configuration
多线程测试
public class SyncTest{
private Long val = 1L;
// private Long val = new Long(1L);
private Object lock = new Object();
public void printVal(int v){
synchronized (lock){
for (int i = 0; i < 50; i++) {
System.out.print(v);
}
}
}
public void printVal2(int v){
synchronized (SyncTest.class){
for (int i = 0; i < 50; i++) {
System.out.print(v);
}
}
}
public void printVal3(int v){
synchronized (SyncTest.class) {
for (int i = 0; i < 50; i++) {
System.out.print(v);
}
}
}
public synchronized void printVal4(int v){
for (int i = 0; i < 50; i++) {
System.out.print(v);
}
}
public synchronized void printVal5(int v){
for (int i = 0; i < 50; i++) {
System.out.print(v);
}
}
public void printVal6(int v){
val = (long)v; //同为一个st对象,但在同步时琐定到不对象,故也达不到同步的目的。
synchronized (val) {
for (int i = 0; i < 50; i++) {
val++;
System.out.print(v);
}
}
}
public void printVal7(int v){
val = (long)v;
synchronized (val) {
for (int i = 0; i < 50; i++) {
val++;
System.out.print(v);
}
}
}
public void printVal8(int v){
synchronized (this) {
for (int i = 0; i < 50; i++) {
val++;
System.out.print(v);
}
}
}
public void printVal9(int v){
synchronized (this) {
for (int i = 0; i < 50; i++) {
val++;
System.out.print(v);
}
}
}
public static void main(String args[]) {
final SyncTest st = new SyncTest();
final SyncTest st2 = new SyncTest();
Thread f1 = new Thread(new Runnable() {
public void run() {
st.printVal6(1);
}
});
f1.start();
Thread f2 = new Thread(new Runnable() {
public void run() {
st.printVal7(2);
}
});
f2.start();
}
}
1.修饰函数时,相同对象互斥,不同对象等同于没有synchronized
2.Long val=1L时,多个实例间仍然是同步的。故原子类型不合适作同步变量使用。
图示: