`
zengshaotao
  • 浏览: 800056 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

多线程编程实例

    博客分类:
  • java
 
阅读更多
package thread;

public class TestSync implements Runnable{

Timer timer = new Timer();
public static void main(String args[]){
TestSync ts = new TestSync();
Thread t1 = new Thread(ts);
Thread t2 = new Thread(ts);
t1.setName("t1");
t2.setName("t2");
t1.start();
t2.start();

}
public void run(){
timer.add(Thread.currentThread().getName());
}
}

class Timer{
private static int num=0;

//没有synchronized关键字,执行结果:
// t1,你是第2个使用timer的线程!
// t2,你是第2个使用timer的线程!

//有synchronized关键字,执行结果:
// t1,你是第1个使用timer的线程!
// t2,你是第2个使用timer的线程!

//synchronized可以对需要同步执行的代码进行同步
//加在代码块上和方法上,那么同步的粒度将会发生改变
public synchronized void add(String name){
num++;
try {
Thread.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(name+",你是第"+num+"个使用timer的线程!");
}
}



package thread;

public class DeadLockTest implements Runnable{

public int flag = 1;

static Object o1 = new Object(),o2 = new Object();

public void run() {

System.out.println("flag = "+ flag);

if(flag ==1){
synchronized(o1){
try {
System.out.println("lock o1,waitting for o2,sleeping......");
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized(o2){
System.out.println("1");
}
}
}

if(flag ==2){
synchronized(o2){
try {
System.out.println("lock o2,waitting for o1,sleeping......");
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized(o1){
System.out.println("2");
}
}
}

}//run block

public static void main(String args[]){
DeadLockTest dl1 = new DeadLockTest();
DeadLockTest dl2 = new DeadLockTest();
dl1.flag = 1;
dl2.flag = 2;
Thread t1 = new Thread(dl1);
Thread t2 = new Thread(dl2);
t1.start();
t2.start();
//程序一直处于挂起,等待状态。。。。。。
// flag = 1
// lock o1,waitting for o2,sleeping......
// flag = 2
// lock o2,waitting for o1,sleeping......
}
}
分享到:
评论

相关推荐

    Linux下C语言多线程编程实例

    Linux 下 C 语言多线程编程实例 Linux 下的多线程编程是一种非常重要的技术,在实际应用中有非常广泛的应用范围。多线程编程可以大大提高程序的执行效率和响应速度。但是,多线程编程也存在一些复杂性,例如线程...

    C# 多线程编程实例实战

    C# 多线程编程实例实战 本文探索了 C# 多线程编程实例实战,特别是单个写入程序/多个阅读程序的线程同步问题。在这种情况下,写入程序需要修改共享资源,而阅读程序需要读取数据。为了解决这个问题,需要满足两个...

    linux下C语言多线程编程实例

    三、多线程编程实例 实例代码可能包含以下三个经典场景: 1. 并行计算:创建多个线程,每个线程负责计算一部分任务,最后汇总结果。这在大数据处理和科学计算中很常见。 ```c #include #include #define NUM_...

    多线程编程实例适合网络编程人员

    本文将深入探讨多线程编程实例及其在网络编程中的应用。 首先,理解多线程的概念是必要的。线程是操作系统分配CPU时间的基本单元,一个进程中可以包含多个线程。多线程编程允许开发者创建并行运行的任务,这些任务...

    vc多线程编程实例

    本文将深入探讨“vc多线程编程实例”,并详细解释如何利用多线程技术提高程序性能。 首先,多线程是指在一个应用程序中同时运行多个执行线程。这允许程序的不同部分同时工作,而不是按顺序执行,从而极大地提高了...

    C#多线程编程实例实战

    在C#编程中,多线程是一个至关重要的概念,特别是在现代计算环境中,它能极大地提升应用程序...在文档"C#多线程编程实例实战.doc"中,应详细介绍了这些知识点并提供了具体示例,帮助读者深入理解和实践C#的多线程编程。

    C语言多线程编程实例.pdf

    标题中的“C语言多线程编程实例”直接指出了文档的主题内容,即围绕C语言编程中多线程编程技术的实例讲解。多线程是编程中的一项关键技术,能够允许程序同时执行多个线程,提高程序的运行效率和响应速度。 描述部分...

    Java多线程编程实例

    本书“Java多线程编程实例”深入浅出地讲解了如何在Java环境中实现多线程操作,尽管出版时间较早,但其内容的经典性和实用性使其在现代开发中仍具有极高的参考价值。 首先,我们要理解Java中的线程是如何创建的。...

    《Java多线程编程实例》随书源码

    《Java多线程编程实例》这本书深入浅出地探讨了Java中的多线程编程,通过丰富的实例帮助读者理解和掌握这一复杂主题。随书源码提供了实际操作的机会,以便读者能够亲手实践书中的示例,加深理解。 1. **线程创建...

    C#多线程编程实例 线程与窗体交互源码

    标题中的"C#多线程编程实例 线程与窗体交互源码"意味着这个示例将展示如何在线程安全的环境下操作UI组件。在C#中,我们通常使用`Control.Invoke`或`Control.BeginInvoke`方法来解决这个问题。这些方法会在正确的线程...

    VC++多线程编程 实例及讲解

    这个压缩包“VC++多线程编程实例及讲解”提供了关于如何在Microsoft Visual C++中实现多线程的详细教程和实践案例。 一、多线程基础 多线程是现代操作系统中的一个特性,它允许程序创建多个并发执行的线程。在VC++...

    Visual C++多线程编程实例及讲解.

    本资料“Visual C++多线程编程实例及讲解”将深入探讨这一主题。 首先,我们要理解什么是多线程。线程是操作系统分配CPU时间的基本单元,一个进程中可以有多个线程同时执行,它们共享同一内存空间,这样就能在等待I...

    MFC多线程编程实例----多线程画线源码

    在标题中提到的“MFC多线程编程实例——多线程画线源码”,我们主要关注的是如何在同一个窗口或图形界面上,通过多个线程同时执行画线操作。这通常涉及到以下几个关键知识点: 1. **线程基础**:在计算机科学中,...

    java多线程编程实例

    ### Java多线程编程实例解析 #### 1. 创建线程的方式 在Java中,创建线程有两种主要方式:通过继承`Thread`类或实现`Runnable`接口。 - **继承Thread类**:创建一个新类继承自`Thread`,并重写其`run()`方法。在`...

    C#Socket多线程编程实例

    C# Socket多线程编程实例是一个讲解如何使用C#语言结合多线程技术来实现网络通信的具体例子。 C#(读作“看井”)是由微软公司推出的一种面向对象的编程语言,它集成于.NET框架中。C#的设计初衷是为了解决当时Sun...

    Python 多线程编程实例

    Python 多线程编程实例,一个综合示例

    C#多线程编程实例实战.pdf

    C#多线程编程实例实战 C#多线程编程实例实战是指在C#语言中实现多线程编程的实例和实战经验。多线程编程是指在同一个进程中创建多个线程,以便提高程序的执行效率和响应速度。在C#语言中,可以使用Thread类和线程池...

    C#Socket多线程编程实例[收集].pdf

    C# Socket 多线程编程实例 C# 是微软随着 VS.net 新推出的语言,它具有 C++ 的强健和 VB 等的 RAD 特性。微软推出 C# 主要是为了对抗 Sun 公司的 Java。C# 在网络编程方面也自然不甘落后于人。这篇文章主要介绍 C# ...

    C#多线程编程实例 线程与窗体交互源码.rar

    "C#多线程编程实例 线程与窗体交互源码.rar"这个压缩包文件提供了一些实际的代码示例,帮助开发者理解和实践如何在C#中进行多线程编程以及如何与窗体进行交互。 1. **线程基础**:在C#中,可以使用`System....

    在VC中利用API实现多线程编程实例.rar

    在VC中利用API实现多线程编程实例

Global site tag (gtag.js) - Google Analytics