`
jinyike
  • 浏览: 29256 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

关于java 多线程线程Thread 共享资源的简单用法和理解

 
阅读更多
最近看到JAVA里面对资源共享引入的synchronized的同步机制,我们都知道Thread这个类的构造函数里面有类似一个实现Runnable这个接口的类,这个类可以存放着多个线程之间的资源共享,比如:

    public Thread(Runnable target) {
        init(null, target, "Thread-" + nextThreadNum(), 0);
    }


这个代码里面可以看到我们可以直接写一个自己的类去实现这个接口Runnable,然后创建每个Thread用一份,就可以达到了资源共享了,比如:

        Runable_demo run = new Runable_demo();
        // TODO Auto-generated method stub
        new Thread(run,"Tread one").start();
        new Thread(run,"Tread two").start();
        new Thread(run,"Tread three").start();
        new Thread(run,"Tread four").start();
        new Thread(run,"Tread five").start();
        new Thread(run,"Tread six").start();


这里强调用一点,当然对于在自己实现的Runable_demo这个类里面可以直接定义一些private 非static的数据了,但是这里有个注意的是对于一个类的static变量,他们不管是不是重新new,他的资源都是共享的,比如:

        new Thread(new Runable_demo(),"Tread one").start();
        new Thread(new Runable_demo(),"Tread two").start();
        new Thread(new Runable_demo(),"Tread three").start();
        new Thread(new Runable_demo(),"Tread four").start();
        new Thread(new Runable_demo(),"Tread five").start();
        new Thread(new Runable_demo(),"Tread six").start();


/**
 * 
 */
package thread_test;

/**
 * @author Administrator
 *
 */
public class Runable_demo implements Runnable{

    private static int g_value = 100;
    /**
     * @param args
     */
    public static void main(String[] args) {
        
        // TODO Auto-generated method stub
        new Thread(new Runable_demo(),"Tread one").start();
        new Thread(new Runable_demo(),"Tread two").start();
        new Thread(new Runable_demo(),"Tread three").start();
        new Thread(new Runable_demo(),"Tread four").start();
        new Thread(new Runable_demo(),"Tread five").start();
        new Thread(new Runable_demo(),"Tread six").start();

    }

    /* (non-Javadoc)
     * @see java.lang.Runnable#run()
     */
    @Override
    public void run() 
    {
        while(true)
        {
            speical_print();
            try {
                Thread.sleep(10);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
    
    synchronized void speical_print()
    {
        if(g_value > 0)
            System.out.println(Thread.currentThread().getName()+" : ........ value = " + g_value--);
    }

}
分享到:
评论

相关推荐

    java多线程的讲解和实战

    Java多线程是Java编程中的重要概念,尤其在如今的多核处理器环境下,理解并熟练掌握多线程技术对于提高程序性能和响应速度至关重要。本资料详细讲解了Java多线程的原理,并提供了丰富的实战代码,非常适合Java初学者...

    java多线程经典案例

    通过分析并实践`threadTest`案例,我们可以深入理解Java多线程的原理和使用技巧,为编写高效并发程序打下坚实基础。同时,也要注意多线程编程中的死锁、活锁和饥饿等问题,合理设计线程间的交互,避免出现不可预期的...

    java多线程Demo

    Java多线程是Java编程中的一个重要概念,它允许程序同时执行多个任务,提高了程序的效率和响应速度。在Java中,实现多线程有两种主要方式:继承Thread类和实现Runnable接口。 1. 继承Thread类: 当我们创建一个新...

    Java多线程的简单应用

    Java多线程是Java编程中的重要概念,它允许程序同时执行多个任务,提高了程序的效率和响应性。在Java中,实现多线程有两种主要方式:通过继承Thread类或者实现Runnable接口。本示例可能是一个Applet,Applet是Java小...

    java 多线程并发实例

    在Java编程中,多线程并发是...总之,Java的多线程并发实例可以帮助我们更好地理解和实践线程控制、同步机制以及经典的设计模式,提升我们的编程能力。通过不断学习和实践,我们可以编写出高效、安全的多线程并发程序。

    java多线程简单下载器

    【Java多线程简单下载器】是一个初学者的编程作业,虽然代码可能较为混乱,但其核心功能已经实现,即通过多线程技术进行文件的下载。在Java中,多线程是并发处理的重要手段,它允许多个任务在同一时间执行,从而提高...

    Java 多线程 PPT

    本文将深入探讨Java多线程的相关概念、线程类和接口的使用,以及线程的同步与互斥。 首先,我们需要理解进程与线程的基本概念。程序是一组静态指令的集合,而进程则是程序在执行过程中的一个实例,拥有独立的内存...

    Java多线程练习题

    Java多线程是Java编程中的核心概念,它允许程序同时执行多个任务,提高了系统的效率和响应性。在Java中,多线程的实现主要通过两种方式:继承Thread类和实现Runnable接口。理解并掌握多线程的使用对于任何Java开发者...

    Java 模拟线程并发

    除了基本的线程创建,Java还提供了synchronized关键字用于线程同步,防止多个线程同时访问共享资源导致数据不一致。synchronized可以修饰方法或代码块,当一个线程正在执行synchronized代码时,其他线程必须等待。 ...

    Java多线程编程核心技术_完整版_java_

    Java多线程编程是Java开发中的...以上内容只是《Java多线程编程核心技术》教程中的一部分核心知识点,实际学习中还需要结合具体示例和实践来深入理解和掌握。通过学习,开发者可以编写出高效、稳定的多线程Java程序。

    汪文君JAVA多线程编程实战(完整不加密)

    此外,书中还深入探讨了线程安全问题,包括共享资源的并发访问、死锁、活锁、饥饿等问题,以及如何通过同步机制(如synchronized关键字、wait()、notify()和notifyAll()方法)来解决这些问题。Java内存模型(JMM)也...

    Java多线程技术精讲

    Java多线程技术是Java编程中的重要组成部分,它允许程序同时执行多个任务,极大地提高了程序的效率和响应性。在现代计算机系统中,多线程是实现并发处理的关键技术,尤其在服务器端应用和高性能计算中不可或缺。 ...

    java多线程学习

    在学习Java多线程的过程中,理解线程与进程的概念是非常基础且重要的一步。首先,进程是一个程序的执行实例,是操作系统资源分配的基本单位,具有独立的地址空间和运行状态。每个进程至少包含一个线程,我们称之为...

    java多线程分页查询

    ### Java多线程分页查询知识点详解 #### 一、背景与需求分析 在实际的软件开发过程中,尤其是在处理大量数据时,如何高效地进行数据查询成为了一个关键问题。例如,在一个用户众多的社交平台上,当用户需要查看...

    JAVA多线程编程技术PDF

    这份“JAVA多线程编程技术PDF”是学习和掌握这一领域的经典资料,涵盖了多线程的全部知识点。 首先,多线程的核心概念包括线程的创建与启动。在Java中,可以通过实现Runnable接口或继承Thread类来创建线程。创建后...

    java多线程处理数据库数据

    在Java编程中,多线程处理是提升程序性能和效率的重要手段,特别是在处理大量数据库数据时。本主题将深入探讨如何使用Java的并发包(java.util.concurrent)来实现多线程对数据库数据的批量处理,包括增、删、改等...

    Java多线程详解及示例

    Java多线程编程是提升程序性能和响应性的关键技术。理解多线程的概念,掌握线程的创建、同步、通信、死锁避免等核心知识点,以及合理使用线程池,对于编写高效、稳定的并发程序至关重要。通过实践,开发者可以更好地...

    javad多线程

    在 Java 中,多线程编程可以通过 Thread 类和 Runnable 接口来实现。 为什么需要多线程? 在单线程程序中,如果某个任务需要很长时间来执行,那么整个程序将被阻塞,无法响应用户的其他请求。使用多线程编程可以...

    精通java多线程

    Java多线程是Java编程语言中的一个重要特性,它允许程序同时执行多个任务,极大地提高了程序的效率和响应性。在现代计算机系统中,多核处理器的普及使得多线程技术成为提升性能的关键手段。本篇将深入探讨Java多线程...

    Java多线程实现异步调用实例

    总之,Java多线程和异步调用是构建高效、响应迅速的应用程序的关键技术。通过合理利用这些工具和机制,开发者可以编写出能够充分利用多核处理器优势的代码,从而提高软件性能。在实际应用中,理解并熟练掌握这些概念...

Global site tag (gtag.js) - Google Analytics