import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock; public class RunnableTest2 {
// private StringBuilder sb = new StringBuilder();
private StringBuffer sb = new StringBuffer();
inc i1 = new inc();
dec d1 = new dec();
private Lock lock = new ReentrantLock();
private boolean ok = false;
public static void main(String[] args) throws InterruptedException {
RunnableTest2 tr = new RunnableTest2();
double time = System.currentTimeMillis();
for(int i=0;i<1;i++) {
new Thread(tr.i1).start();
new Thread(tr.d1).start(); }
// System.out.println(System.currentTimeMillis()-time);
} private void incc() {
// synchronized(sb) {
lock.lock();
for(int i=0;i<7;i++) {
char at = "freedom".charAt(i);
sb.append(at+""); } System.out.println(Thread.currentThread().getName()+sb.toString());
sb.delete(0, 7);
// }
lock.unlock();
} private void decc() {
// synchronized(sb) {
lock.lock(); for(int i=0;i<7;i++) {
char at = "freedom".charAt(i);
sb.append(at+""); } System.out.println(Thread.currentThread().getName()+sb.toString());
sb.delete(0, 7);
// }
lock.unlock(); } class inc implements Runnable {
public void run() {
// TODO Auto-generated method stub
for(int i=0; i<100000; i++)
incc();
}
} class dec implements Runnable {
public void run() {
// TODO Auto-generated method stub
for(int i=0; i<100000; i++)
decc();
}
}
} 打印结果各有不同

两个线程与stringbuffer和stringbuiler以及lock synchronized线程测试的更多相关文章

  1. 一个类有两个方法,其中一个是同步的,另一个是非同步的; 现在又两个线程A和B,请问:当线程A访问此类的同步方法时,线程B是否能访问此类的非同步方法?

    一个类有两个方法,其中一个是同步的,另一个是非同步的:现在又两个线程A和B,请问:当线程A访问此类的同步方法时,线程B是否能访问此类的非同步方法? 答案:可以 验证 package com.my.te ...

  2. 一个类,有新增元素(add)和获取元素数量(size)方法。 启动两个线程。线程1向容器中新增数据。线程2监听容器元素数量,当容器元素数量为5时,线程2输出信息并终止

    方式一: /** * 两个线程要是可见的所以要加上votalile */public class Test_01 { public static void main(String[] args) { ...

  3. Java-多线程第三篇3种创建的线程方式、线程的生命周期、线程控制、线程同步、线程通信

    1.Java使用Thread类代表线程.     所有的线程对象必须是Thread类或其子类的实例. 当线程继承Thread类时,直接使用this即可获取当前线程,Thread对象的getName() ...

  4. Java并发1——线程创建、启动、生命周期与线程控制

    内容提要: 线程与进程 为什么要使用多线程/进程?线程与进程的区别?线程对比进程的优势?Java中有多进程吗? 线程的创建与启动 线程的创建有哪几种方式?它们之间有什么区别? 线程的生命周期与线程控制 ...

  5. C#线程 在某一时间内,只有N个线程在并发执行,其余都在队列中的实现(转载)

    具体的需求是 在某一时间点,只有N个线程在并发执行,如果有多余的线程,则排队等候~ 还真是费尽心思啊~最终还是被我攻克了~ 下面我就来说说具体的实现 C#提供了Mutex与Interlocked这两个 ...

  6. C# 线程(三):如何操纵一个线程

    From : http://kb.cnblogs.com/page/42529/ 下面我们就动手来创建一个线程,使用Thread类创建线程时,只需提供线程入口即可.(线程入口使程序知道该让这个线程干什 ...

  7. Qt 线程基础(Thread Basics的翻译,线程的五种使用情况)

    Qt 线程基础(QThread.QtConcurrent等) 转载自:http://blog.csdn.net/dbzhang800/article/details/6554104 昨晚看Qt的Man ...

  8. Java线程:新特征-有返回值的线程

    http://lavasoft.blog.51cto.com/62575/222082/ Java线程:新特征-有返回值的线程 2009-11-04 17:33:56 标签:返回值 职场 线程 休闲 ...

  9. java synchronized 线程同步机制详解

    Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码. 一.当两个并发线程访问同一个对象object中的这个synchronized(this ...

随机推荐

  1. mysql索引的建立和使用

    转自[http://www.cnblogs.com/mywebname/articles/555696.html] 一.索引的概念        索引就是加快检索表中数据的方法.数据库的索引类似于书籍 ...

  2. Spring cloud + boot 问题记录

    1 配置中心更新值的时候,要在有需要更新的属性 类上 加入  @RefreshScope 注解 2 关于Spring Cloud 调用服务     服务名称的问题 spring: applicatio ...

  3. mysql 跨库查询问题

    MySQL实现跨服务器查询 https://blog.csdn.net/LYK_for_dba/article/details/78180444 mysql> create database l ...

  4. Dive into Spring framework -- 了解基本原理(二)--设计模式-part1

    比较巧,自己在接触设计模式的时候,也刚开始学习spring,但可惜的是,真的仅仅在学习“用”spring,每天都沉浸在会痛快的完成spring各种配置的快乐之中,但对成长无用.其实当初就清楚,spri ...

  5. 解决httpclient因为保持永久长连接造成连接吊死的问题

    httpclient使用了连接池,如果没有设置keep-alive策略,PoolingHttpClientConnectionManager会默认使用永久连接. 最近在调用京东api时,发现一个请求开 ...

  6. jQuery实际案例②——三层轮播图

    1.如图,这种轮播图需要实现的是,当鼠标移到2上时,第二张图片从右侧过来 2.需要注意的:①很明显这是通过改变z-index与left值来实现的:  ②整体布局需注意,图与数值(1,2,3,4,5)两 ...

  7. jQuery回车键快速切换下一个input文本框解决方案

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. linux加域退域

    realm list realm leave od.com realm join -U Administrator od.com

  9. 1-10 RHLE7 系统进程管理

    1.1-Linux进程管理 程序.进程.线程 程序:一组指令的集合    QQ 进程:程序的执行就是进程.也可以把进程看成一个独立的程序,在内存中有其对应的代码空间和数据空间,一个进程所拥有的数据和代 ...

  10. HDU-4679-树的直径(树形dp)

    Terrorist’s destroy Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Othe ...