标签:Thread 创建 System t1 myThread 线程 println
创建线程
1.继承Thread类创建线程
public class MyThread extends Thread{
public void run(){
System.out.println("这里运行线程代码");
}
public static void main(String[] args) {
MyThread myThread = new MyThread();
myThread.start();
}
}
2.实现Runnable接口创建线程
public class MyThread implements Runnable {
public void run(){
System.out.println(Thread.currentThread().getName()+" 这里是线程运行的代码");
}
public static void main(String[] args) {
Thread t1 = new Thread(new MyThread());
t1.start();
Thread t2 = new Thread(new MyThread());
t2.start();
}
}
3.匿名Thread创建线程
public class MyThread {
Thread t1 = new Thread(){
public void run(){
System.out.println("通过匿名Thread创建线程代码实现");
}
};
public static void main(String[] args) {
MyThread myThread = new MyThread();
myThread.t1.start();
}
}
4.通过匿名Runnable创建线程
public class MyThread {
Thread t1= new Thread(new Runnable() {
@Override
public void run() {
System.out.println("通过匿名Runnable创建线程代码");
}
});
public static void main(String[] args) {
MyThread myThread = new MyThread();
myThread.t1.start();
}
}
5.通过lambda创建线程
public class MyThread {
Thread t1 = new Thread(()->{
System.out.println("使用labda创建线程代码");
});
public static void main(String[] args) {
MyThread myThread = new MyThread();
myThread.t1.start();
}
}
Thread类和常见方法
1.Thread的常见构造方法
Thread()-----------------创建线程对象
Thread(Runnable target)----------------使用Runnable创建线程对象
Thread(String name)------------------创建线程对象并命名
Thread(Runnable target)----------------使用Runnable创建线程对象并命名
2.常见属性及获取方法
ID-----------------------getId()
名字---------------------getName()
状态----------------------getState()
优先级------------------------getPriority()
是否后台线程---------------isDaemon()
是否存活---------------------isAlive()
是否被中断------------------isInterrupted()
public class MyThread {
Thread t1 = new Thread(()->{
System.out.println("使用labda创建线程代码");
});
public static void main(String[] args) {
MyThread myThread = new MyThread();
System.out.println(myThread.t1.getId());
System.out.println(myThread.t1.getName());
System.out.println(myThread.t1.getState());
System.out.println(myThread.t1.getPriority());
System.out.println(myThread.t1.isDaemon());
System.out.println(myThread.t1.isAlive());
System.out.println(myThread.t1.isInterrupted());
myThread.t1.start();
System.out.println(myThread.t1.getId());
System.out.println(myThread.t1.getName());
System.out.println(myThread.t1.getState());
System.out.println(myThread.t1.getPriority());
System.out.println(myThread.t1.isDaemon());
System.out.println(myThread.t1.isAlive());
System.out.println(myThread.t1.isInterrupted());
}
}
起动线程------start()
1.就是让操作系统内核真正创建一个线程来执行
2.run()和start()方法不同:调用start()才创建新线程,而执行新的执行流;run()方法只是普通的调用方法,在原来线程中运行
中断线程
1.让线程的方法执行完毕,利用boolean类型进行判断
2.使用isInterrupt方法
①在while中使用Thread.correntThread().isInterrupted方法
②在catch中添加break;
等待线程-----join()
1.确定线程的结束顺序,等待线程结束才会启动join()
2.join()---------等待线程的结束
join(long millis)------在millis毫秒级时间范围内等待线程结束
join(long millis,int nanos)----------增加精度的时间范围内等待线程结束
休眠线程----sleep()
1.如果没有调用sleep()线程处于就绪状态,随时会被调度到CPU上执行
2.如果调用了sleep()就会将对应的tesk struct 放在等待队列中,进入等待状态,等待时间结束,再放入就绪队列中,等待CPU调度
3.在等待队列中不是依赖先进先出,而是依据优先级
标签:Thread,创建,System,t1,myThread,线程,println 来源: https://blog.csdn.net/qq_56967325/article/details/119482377
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。