zoukankan      html  css  js  c++  java
  • Java线程基础

    一个线程运行一个顺序程序。

    在java中,线程一般是java.lang.Thread的子类,它提供了一些方法来创建线程、启动线程。

    挂起线程、等待线程完毕。

    首先,创建一个实现Runnable接口的类,该类的run()方法完毕全部的工作。比如。以下是一个打印字符串的简单线程。

    package lou.thread;
    
    public class HelloWorld implements Runnable {
    	String message;
    
    	public HelloWorld(String m) {
    		this.message = m;
    	}
    	@Override
    	public void run() {
    		System.out.println(message);
    	}
    
    }

    我们能够以一个Runnable对象作为參数来调用Thread类的构造函数,将Runnable对象转变为线程。例如以下所看到的:

    String m = "Hello world form Thread " + i;
    Thread thread = new Thread(new HelloWorld(m));

    java提供一种语法上的快捷方式,称为匿名内部类,它能让你无需显示地定义HelloWorld类:

    final String m = "Hello world form Thread " + i;
    		thread = new Thread(new Runnable() {
    			@Override
    			public void run(){
    				System.out.println(m);
    			}
    		});

    上面的程序段创建一个实现Runnable接口的匿名类,其run()方法的行为已描写叙述,当线程创建之后,它须要被启动:

    thread.start();

    这种方法能使线程执行。

    调用该方法的线程将马上返回。假设调用者打算等待线程结束。怎必须连接线程:

    thread.join();

    此时调用者会被堵塞直到线程的run()方法返回。

    以下给出一个可以初始化多线程、启动多线程、等待多线程完毕、然后打印一条消息的方法。

    该方法创建一个线程组成的数组。并使用匿名内部类

    语法进行初始化。在循环结束时。则创建了一个休眠线程组成的数组。

    	public static void main(String[] args) throws InterruptedException {
    		Thread[] thread = new Thread[8];
    		for (int i = 0; i < thread.length; i++) {
    			final String message = "Hello from thread " + i;
    			thread[i] = new Thread(new Runnable() {
    				@Override
    				public void run() {
    					System.out.println(message);
    				}
    			});
    		}
    		for (int i = 0; i < thread.length; i++) {
    			thread[i].start();
    		}
    		for (int i = 0; i < thread.length; i++) {
    			thread[i].join();
    		}
    	}



  • 相关阅读:
    java——阶段性整理(方法的重载重写和一些关键字)
    设计模式——单例模式
    source
    set和setenv
    c++编译加执行脚本
    python脚本小记
    转义字符
    istream_iterator/ostream_iterator
    字符串替换程序 p324
    程序编译后运行时的内存分配
  • 原文地址:https://www.cnblogs.com/slgkaifa/p/6914506.html
Copyright © 2011-2022 走看看