什么是多线程
线程初体验
ublic class MainThread {
public static void main(String[] args) {
Thread thread=Thread.currentThread();
String name=thread.getName();
System.out.println(name);
thread.setName("my");
name=thread.getName();
System.out.println(name);
}
}
继承Therad创建线程
实现Runnable接口
public class MyThread2 implements Runnable {
public void run(){
for (int i = 0; i <=100 ; i++) {
System.out.println(Thread.currentThread().getName()+i);
}
}
public static void main(String[] args) {
//创建线程对象
Runnable myThread=new MyThread2();
Thread thread=new Thread(myThread,"1");
Thread thread1=new Thread(myThread,"2");
//启动线程
thread.start();
thread1.start();
//是否可以使用run()
//只有主线程一个执行路径,依次调用两次ruh()
}
}
线程创建两种方式的区别
public class MyThread2 implements Runnable {
int tickets=10;
public void run(){
for (int i = 0; i < 10; i++) {
if (this.tickets>0)
System.out.println(Thread.currentThread().getName()+this.tickets--);
}
}
public static void main(String[] args) {
//创建线程对象
Runnable myThread=new MyThread2();
Thread thread=new Thread(myThread,"窗口1--");
Thread thread1=new Thread(myThread,"窗口2--");
//启动线程
thread.start();
thread1.start();
//是否可以使用run()
//只有主线程一个执行路径,依次调用两次ruh()
}
}
线程状态
public class myThread3 implements Runnable{
@Override
public void run() {
System.out.println("运行当中");
try {
Thread.sleep(5000);
System.out.println("线程休眠");
} catch (InterruptedException e) {
System.out.println("线程中断");
e.printStackTrace();
}
}
public static void main(String[] args) {
Runnable runnable=new myThread3();
Thread t=new Thread(runnable);
System.out.println("创建");
t.start();
System.out.println("就绪");
}
}
线程调度-优先级和休眠
线程调度-join
yield()