java支持多线程编程,Object中wait(), notify()表示队线程的控制
线程中run()函数是线程的主要内容,线程start之后,系统就会自动调用run()函数。
run()方法执行一个时间较长的操作
- 如一个循环
- 显示一系列图片
- 下载一个文件
创建线程的两个方法
第一种,继承 Thread类,并重载run()函数;然后在主函数中new自己定义的线程,然后start。
package week8_demo;
public class TestThread1 {
public static void main(String args[]){
Thread t = new MyThread(100);
t.start();//启动线程
}
}
class MyThread extends Thread {
//定义一个线程类
private int n;;
public MyThread( int n ){
super();
this.n=n;
}
//重载run()函数
public void run() {
for(int i=0;i<n;i++) {
System.out.print (" " + i);
}
}
}
第二种,通过向Thread()构造方法传递Runnable对象来创建线程
package week8_demo;
public class TestThread2 {
public static void main(String args[]) {
//以下两步定义新的线程
MyTask mytask = new MyTask(10);
Thread thread = new Thread(mytask);
//运行线程
thread.start();
//thread.setDaemon(true);这个表示是守护程序,如果不是守护程序不要这样设定
for(int i=0; i<6; i++) {
System.out.println("Main--" + i);
try{
Thread.sleep(500);
}catch( InterruptedException e ){}
}
}
}
class MyTask implements Runnable {
private int n;
public MyTask(int n){
this.n = n;
}
//也是重载run()函数
public void run() {
for(int i=0; i<n; i++) {
System.out.println(" " + i);
try{
Thread.sleep(500);
}catch( InterruptedException e ){}
}
}
}
如果设置thread.setDaemon(true);//这个表示是守护程序,如果不是守护程序不要这样设定
匿名类及Lambda表达式
匿名类
new Thread(){
public void run() {
for(int i=0; i<10; i++)
System.out.println(i);
} }.start();
Lambda表达式
new Thread( ()-> {。。。} ).start();