多线程
1.继承Thread-->复写其中的run()方法即可
class FirstThread extends Thread{
public void run(){
for(int i=0 ; i<100 ; i++)
System.out.println("FirstThread-->"+i);
}
}
class SecondThread extends Thread{
public void run(){
for(int i=0 ; i<100 ; i++)
System.out.println("SecondThread-->"+i);
}
}
class Test{
public static void main(String args []){
//生成线程类的对象
FirstThread firstThread = new FirstThread();
SecondThread secondThread = new SecondThread();
//启动线程
firstThread.start(); //这里不要写 firstThread.run(),不然就变成单线程了
secondThread.start();
for(int i=0 ; i<100 ; i++)
System.out.println("Main-->"+i);
}
}
/*
1.一共有4个线程
|--主线程 主函数
|--垃圾回收线程
|--FirstThread
|--SecondThread
2.相当于CPU在不同的线程中快速切换,线程抢占CPU
*/
2.实现Runnable接口
class RunnableImpl implements Runnable{
public void run(){
for(int i=0 ; i<100 ; i++){
System.out.println("Runnable-->"+i);
if(i==50){
try{
Thread.sleep(5000); //这是一个静态方法,不用生成对象. 括号后面是毫秒
}
catch(Exception e){
e.printStackTrace();
}
}
}
}
}
/*
1.中断线程的方法
|--Tread.sleep(毫秒); 静态方法
当运行这行代码之后,线程并不是直接进入运行状态,而是进入准备状态
|--Tread.yield();
从当前线程让出CPU, 但会继续重新抢CPU
2.设置线程的优先级
|--getPriority();
|--SetPriority(1-10);
*/
---------下面用到匿名内部类来实现Runnable接口------
class Test{
public static void main(String[] args){
Thread th = new Thread(new Runnable(){ //内部匿名类实现runnable接口
public void run(){
for(int i=0 ; i<100 ; i++)
System.out.println("Runnable-->"+i);
}
});
th.start();
for(int i=0 ; i<100 ; i++)
System.out.println("Main-->"+i);
}
}
//这里直接用内部匿名类来实现 活学活用 哈哈!!
class Test{
public static void main(String[] args){
//生成接口实现类对象
RunnableImpl ri = new RunnableImpl();
//将其传入Thread的构造函数中
Thread th = new Thread(ri);
//设置最大优先级
th.setPriority(Thread.MAX_PRIORITY);
//设置最小优先级
th.setPriority(Thread.MIN_PRIORITY);
//启动线程
th.start();
//主线程中对比
for(int i=0 ; i<100 ; i++)
System.out.println("Main-->"+i);
//取得线程优先级
System.out.println("th的优先级"+th.getPriority());
}
}