java">packagecom.ysf;importjava.util.concurrent.atomic.AtomicInteger;publicclassTst02SetThreadName{staticAtomicInteger count =newAtomicInteger();publicstaticvoidmain(String[] args){Thread t =newThread(()->{System.out.println(Thread.currentThread().getName());},"module-func-"+ count.get());t.start();}}
3.线程的优先级
线程的优先级是指CPU调度的优先级
线程优先级最大值:10,最小值:1,默认值5
线程优先级并非决定性因素,效果可能并不会很明显
java">packagecom.ysf;importjava.util.concurrent.TimeUnit;publicclassTst03SetThreadPriority{publicstaticvoidmain(String[] args)throwsInterruptedException{Thread t1 =newThread(()->{for(int i =0;i<100;i++){String name =Thread.currentThread().getName();System.out.println(name +"==>"+ i);}},"priority-1");Thread t2 =newThread(()->{for(int i =0;i<100;i++){String name =Thread.currentThread().getName();System.out.println(name +"==>"+ i);}},"priority-2");t1.setPriority(10);t2.setPriority(1);t1.start();t2.start();TimeUnit.SECONDS.sleep(2L);}}
4.线程的让步
可以通过Thread的静态方法yield,让当前线程从运行状态变为就绪状态
yield方法并不能强制保证CPU不调度自己
java">packagecom.ysf;importjava.util.concurrent.TimeUnit;publicclassTst04SetThreadYield{publicstaticvoidmain(String[] args)throwsInterruptedException{Thread t1 =newThread(()->{for(int i =0;i<100;i++){if(i ==50){Thread.yield();}String name =Thread.currentThread().getName();System.out.println(name +"==>"+ i);}},"yield-1");t1.start();Thread t2 =newThread(()->{for(int i =0;i<100;i++){String name =Thread.currentThread().getName();System.out.println(name +"==>"+ i);}},"yield-2");t2.start();TimeUnit.SECONDS.sleep(2L);}}
java">packagecom.ysf;publicclassTst06ThreadJoin{publicstaticvoidmain(String[] args)throwsInterruptedException{Thread t1 =newThread(()->{String name =Thread.currentThread().getName();for(int i =0;i<10;i++){System.out.println(name +"==>"+ i);}},"join-1");t1.start();for(int i =0;i<5;i++){// 让t1线程join进来,因为是用t1这个线程对象调用,所以一定是在另外一个线程中让t1加入进来if(i ==1){t1.join();}System.out.println(i);}}}