Java中的多线程
来源:互联网 发布:软件质量保证书范本 编辑:程序博客网 时间:2024/06/06 06:57
要想了解多线程首先腰线了解什么是进程,什么是线程。
进程
进程是具有独立功能的程序,是系统调度和资源分配的基本单元。具有动态,并发, 独立的特性。
线程
线程是进程的组成单元,是进程内部的执行单元,进程就是由若干个线程组成的,线程共享进程的资源。
多线程
java语言提供了并发机制,程序员可以在程序中执行多个线程, 每个线程完成一个功能,并与其它线程并发执行,这种并发机制就是多线程。
多线程的实现有两种方式:
- 通过集成Thread类,重写run()方法,其中线程的功能代码就卸载run()方法中。最后执行start()运行。
- 实现Runnable接口。建立一个Runnable的对象,使用Runnable对象的构造方法创建Thread实例。然后启动start()方法。
比较继承Thread类创建多线程和实现Runnable创建多线程的优缺点:
- 由于java是单继承, 继承Thread类之后将不能够继承其他类。而实现Runnable接口后仍然可以继承类和实现其他接口。
- 实现Runnable接口创建多线程,便于实现线程共享进程的资源。
用继承Thread类实现多线程:
public class MyThread extends Thread{ @Override public void run() { while(true){ System.out.println("我是一个线程我正在运行!"); try { Thread.sleep(500); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }}public class Testthread { public static void main(String[] args) { MyThread mt = new MyThread(); System.out.println("我是主线程!"); mt.start(); while(true){ try { Thread.sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println("主线程的进程结束了!"); } }}
实现Runnable创建多线程:
public class BankRunnable implements Runnable { private int money = 100; private String s ="youren"; @Override public void run() { synchronized (s) { if(money>0){ System.out.println(Thread.currentThread().getName()+"取到了现金"+money+"元"); money=money-100; try { Thread.sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } else if(money==0){ System.out.println(Thread.currentThread().getName()+"没有取到了现金"); } } }}public class TestRunnable { public static void main(String[] args) { BankRunnable runnable = new BankRunnable(); Thread t1 = new Thread(runnable, "小红"); Thread t2 = new Thread(runnable,"小名"); t1.start(); t2.start(); }}
运行结果:
0 0
- Java 程序中的多线程
- Java 程序中的多线程
- Java 程序中的多线程
- Java程序中的多线程
- java中的多线程
- Java中的多线程(一)
- Java 程序中的多线程
- Java中的多线程程序设计
- Java 程序中的多线程
- Java 程序中的多线程
- Java 程序中的多线程
- Java 程序中的多线程
- Java 程序中的多线程
- 再忆Java中的多线程
- Java中的多线程
- Java中的多线程
- Java中的多线程编程
- Java中的多线程编程
- poj-2553 Frogger
- 2015 多校联赛 ——HDU5344(水)
- uva 101
- Android开发--Intent-filter属性详解
- 第一天 ted英语学习Chris Milk: How virtual reality can create the ultimate empathy machine
- Java中的多线程
- Direct-X学习笔记--天空盒
- HDU5137
- 《Windows Internals》第六版 Chapter 6 Security 笔记
- UISlider 和 UISegement
- 博客我来了
- 针对报出 cvc-complex-type.2.4.a: Invalid content was found starting with element 问题解决办法
- DRW入门之异常:java.lang.ClassNotFoundException: org.directwebremoting.servlet.DwrServlet.class
- Codeforces Round #202 (Div. 2) B. Color the Fence