用Java多线程在mail中创建Thread对象的介绍

开发 后端
Java多线程有很广泛的使用范围,在很多的情况下我们都会使用到这个语言。下面我们就看看如何用Java多线程来编写Thread对象。

Java多线程有很多的知识需要我们学习,在学习的时候还是需要我们靠近实践。下面我们就来详细的看看有关Java多线程的使用情况。我们接着修改ThreadDemo1,在main方法中创建四个Thread对象:

 

  1. public class ThreadDemo1{  
  2. public static void main(String[] args){  
  3. new ThreadTest().start();  
  4. new ThreadTest().start();  
  5. new ThreadTest().start();  
  6. new ThreadTest().start();  
  7. }  
  8. }  
  9. class ThreadTest extends Thread{  
  10. private int ticket = 100;  
  11. public void run(){  
  12. while(true){  
  13. if(ticket > 0){  
  14. System.out.println(Thread.currentThread().getName() +  
  15. ” is saling ticket” + ticket–);  
  16. }else{  
  17. break;  
  18. }  
  19. }  
  20. }  
  21. }  

这下达到目的了吗?

从结果上看每个票号都被打印了四次,即四个线程各自卖各自的100张票,而不去卖共同的100张票。这种情况是怎么造成的呢?我们需要的是,多个线程去处理同一个资源,一个资源只能对应一个对象,在上面的程序中,我们创建了四个ThreadTest对象,就等于创建了四个资源,每个资源都有100张票,每个线程都在独自处理各自的资源。

经过这些实验和分析,可以总结出,要实现这个铁路售票程序,我们只能创建一个资源对象,但要创建多个线程去处理同一个资源对象,并且每个线程上所运行的是相同的程序代码。在回顾一下使用接口编写Java多线程的过程。

 

  1. public class ThreadDemo1{  
  2. public static void main(String[] args){  
  3. ThreadTest t = new ThreadTest();  
  4. new Thread(t).start();  
  5. new Thread(t).start();  
  6. new Thread(t).start();  
  7. new Thread(t).start();  
  8. }  
  9. }  
  10. class ThreadTest implements Runnable{  
  11. private int tickets = 100;  
  12. public void run(){  
  13. while(true){  
  14. if(tickets > 0){  
  15. System.out.println(Thread.currentThread().getName() +  
  16. ” is saling ticket ” + tickets–);  
  17. }  
  18. }  
  19. }  
  20. }  

上面的程序中,创建了Java多线程,每个线程调用的是同一个ThreadTest对象中的run()方法,访问的是同一个对象中的变量(tickets)的实例,这个程序满足了我们的需求。在Windows上可以启动多个记事本程序一样,也就是多个进程使用同一个记事本程序代码。

【编辑推荐】

  1. Java多线程服务器如何应对相关链接问题
  2. Java多线程应用方法全解密
  3. Java多线程程序如何掌握基本语法
  4. Java多线程同步具体实例讲解
  5. Java多线程如何才能协调好生产和消费的关系
责任编辑:张浩 来源: 计世网
相关推荐

2009-06-29 17:54:10

Java多线程Thread类创建线程

2011-03-08 09:46:21

SQL Mail创建日常报告

2010-03-18 15:47:07

Java创建线程

2010-03-15 17:56:23

Java多线程

2010-03-10 19:25:04

python多线程

2011-07-22 14:55:20

多线程

2011-06-13 10:41:17

JAVA

2010-03-17 19:24:38

Java多线程循环

2022-08-29 10:52:37

线程函数操作系统

2013-03-27 10:32:53

iOS多线程原理runloop介绍GCD

2010-03-15 19:11:39

Java多线程语句

2009-06-29 18:00:05

Java多线程Runnable接口创建线程

2023-12-14 15:05:08

volatile代码C++

2012-12-18 13:34:37

IBMdW

2023-06-06 08:17:52

多线程编程Thread类

2010-03-17 17:30:26

JAVA多线程实现

2010-03-18 13:43:40

python面向对象

2010-03-10 08:54:49

Python多线程

2018-03-14 15:20:05

Java多线程勘误

2017-12-18 16:33:55

多线程对象模型
点赞
收藏

51CTO技术栈公众号