1.Runnable
通过某一线程执行其实例的类
方法:run()(相当于任务本身)
2.Thread
方法:
start()—-使该线程开始执行,Java虚拟机调用该线程的run()方法
假如直接调用run(),就是一个真正的方法调用(单线程)
Interrupt()—-中断线程
sleep()—-正在执行的线程休眠(暂停休眠)
package thread;
/*
* 1.Thread本身实现Runnable接口,自己可以设定任务run()
* 2.线程启动:start(),run()叫做方法调用而不是实现多线程
* 3.中断线程:flag
* 4.cpu的控制权希望可以控制一下:让出cpu sleep()
* */
public class Thread_2 {
public static void main(String[] args) throws InterruptedException {
Feifei feifei = new Feifei();
feifei.start();
Doudou doudou = new Doudou();
doudou.start();
Thread.sleep(1000);//当前线程休眠
feifei.shutUp();//手动中断线程
doudou.shutUp();
}
}
class Feifei extends Thread{
private boolean flag = true;
@Override
public void run() {
while(flag){
System.out.println("吃东西");
}
}
public void shutUp(){
this.flag = false;
}
}
class Doudou extends Thread{
private boolean flag = true;
@Override
public void run() {
while(flag){
System.out.println("减肥");
}
}
public void shutUp(){
this.flag = false;
}
}
package thread;
/*
* 1.启动一个线程计算1-1000和
* 2.结果在main主线程中打印
*/
public class Thread_3 {
public static void main(String[] args) throws InterruptedException {
Task1 task = new Task1();
Thread t = new Thread(task);
t.start();
Thread.sleep(1000);
System.out.println(task.getSum());
}
}
class Task1 implements Runnable{
private int sum;
public int getSum() {
return sum;
}
public void setSum(int sum) {
this.sum = sum;
}
@Override
public void run() {
// TODO Auto-generated method stub
for(int i=1;i<=1000;i++){
this.sum += i;
}
}
}