一.学习内容
创建多线程:1.extends Thread;2.implements Runnable
练习代码:
(1)
package Demo01;
//继承Thread类
public class ThreadDemo extends Thread{
public ThreadDemo(String name) {
super(name);
}
@Override
public void run() {
for(int i =0; i < 100;i++) {
System.out.println(Thread.currentThread().getName());
try {
Thread.sleep((int)(Math.random()*100));
}
catch(InterruptedException e){
e.printStackTrace();
}
}
System.out.println(getName()+"结束");
}
public static void main(String[] args) {
ThreadDemo thread1=new ThreadDemo("线程A");
ThreadDemo thread2=new ThreadDemo("线程B");
thread1.start();
thread2.start();
}
}
(2)
package Demo01;
//实现runable接口
public class RunnableDemo implements Runnable {
@Override
public void run() {
for(int i=0;i<100;i++) {
System.out.println(Thread.currentThread().getName()+"="+1);
try {
Thread.sleep((int)(Math.random()*100));
}catch(InterruptedException e) {
e.printStackTrace();
}
}
System.out.println(Thread.currentThread().getName()+"结束");
}
public static void main(String[] args) {
RunnableDemo test=new RunnableDemo();
Thread thread1=new Thread(test,"线程A");
Thread thread2=new Thread(test,"线程B");
thread1.start();
thread2.start();
}
}
(3)
package Demo01;
//主线程
public class MainThreadDeno {
public static void main(String[] args) {
Thread thread= Thread.currentThread();
System.out.println(thread);
System.out.println(thread.getName());
thread.setName("MyThread");
System.out.println(thread);
}
}
(4)
package Demo01;
//优先级
public class theadPriorityDemo {
static class CounterThread extends Thread{
@Override
public void run() {
int count=0;
while(true) {
try {
sleep(1);
}catch(InterruptedException e) {
count++;
if(count==100)
break;
System.out.println(getName()+":"+count);
}
}
}
public static void main(String[] args) {
CounterThread thread1=new CounterThread();
CounterThread thread2=new CounterThread();
thread1.setPriority(1);
thread2.setPriority(10);
thread1.start();
thread2.start();
}
}
}
(5)
package Demo01;
import java.time.LocalDateTime;
//控制线程结束
public class ThreadStopDemo {
static class MyTimer implements Runnable{
boolean Flag=true;
@Override
public void run() {
while(Flag) {
System.out.println(""+LocalDateTime.now()+"....");
try {
Thread.sleep((int)(Math.random()*100));
}catch(InterruptedException e) {
e.printStackTrace();
}
}
System.out.println(Thread.currentThread().getName()+"结束");
}
public void stopRun() {
Flag=false;
}
public static void main(String[] args) {
MyTimer timer=new MyTimer();
Thread thread=new Thread (timer);
thread.setName("Timer");
thread.start();
for(int i=0;i<100;i++) {
System.out.println(""+i);
try {
thread.sleep(100);
}
catch(InterruptedException e) {
timer.stopRun();
}
}
}
}
}