java线程参数
⑴ java runnable线程如何传参
Runnable里面没有传参函数,所以得自己造一个
0.自定义一个接口,继承Runnable,新增一个传参方法
{
publicMyRunnablesetParam(String...param);
}
实现这个自定义接口
MyRunnablesendMessage=newMyRunnable(){
Stringmessage;
@Override
publicMyRunnablesetParam(String...param){
message=param[0];
returnthis;
}
@Override
publicvoidrun(){
sendMessage(message);
}
};
2.初始化线程池,运行Runnable
=Executors.newCachedThreadPool();
cachedThreadPool.execute(sendMessage.setParam("Iamservice"));
如上所示,线程池调用的一个runnable实例,这个runnable实例传入了一个字符串参数
⑵ Java线程池几个参数
corePollSize:核心线程数。
maximumPoolSize:最大线程数。
keepAliveTime:空闲的线程保留的时间。
TimeUnit:空闲线程的保留时间单位。
BlockingQueue<Runnable>:阻塞队列,存储等待执行的任务。
ThreadFactory:线程工厂,用来创建线程。
RejectedExecutionHandler:队列已满,而且任务量大于最大线程的异常处理策略。
⑶ JAVA传参的问题 如何让多个线程可以调用一个参数
methodA() 要变成 methodA(object xxx) { int i = (int)xxx; } Thread的委托有2个重载,一个是不带参数,另一个是带object参数,你还可以: methodA(object xxx) { objecct[] xx = (objecct[])xxx;// 这样是传递多个参数 }
⑷ java中如何给Runnable线程传参
Java中给Runnable线程传参数的方式如下:
向线程中传递数据的三种方法:
一、通过构造函数传递参数
{
privateStringname;
publicMyThread1(Stringname)
{
this.name=name;
}
publicvoidrun()
{
System.out.println("hello"+name);
}
publicstaticvoidmain(String[]args)
{
Threadthread=newMyThread1("world");
thread.start();
}
}
二、通过变量和方法传递数据
{
privateStringname;
publicvoidsetName(Stringname)
{
this.name=name;
}
publicvoidrun()
{
System.out.println("hello"+name);
}
publicstaticvoidmain(String[]args)
{
MyThread2myThread=newMyThread2();
myThread.setName("world");
Threadthread=newThread(myThread);
thread.start();
}
}
三、通过回调函数传递数据
classData
{
publicintvalue=0;
}
classWork
{
publicvoidprocess(Datadata,Integernumbers)
{
for(intn:numbers)
{
data.value+=n;
}
}
}
{
privateWorkwork;
publicMyThread3(Workwork)
{
this.work=work;
}
publicvoidrun()
{
java.util.Randomrandom=newjava.util.Random();
Datadata=newData();
intn1=random.nextInt(1000);
intn2=random.nextInt(2000);
intn3=random.nextInt(3000);
work.process(data,n1,n2,n3);//使用回调函数
System.out.println(String.valueOf(n1)+"+"+String.valueOf(n2)+"+"
+String.valueOf(n3)+"="+data.value);
}
publicstaticvoidmain(String[]args)
{
Threadthread=newMyThread3(newWork());
thread.start();
}
}
⑸ java中多线程常见的几个参数
java中多线程常见的几个参数
sleep:在指定的毫秒数内让当前正在执行的线程休眠(暂停执行).
此操作受到系统计时器和调度程序精度和准确性的影响。
该线程不丢失任何监视器的所属权。
调用sleep的时候锁并没有被释放。
休眠
Java SE5引入了更加显示的sleep()作为TimeUnit类的一部分,这个方法允许你指定sleep()延迟的时间单元,因此可以提供更好的可阅读性。
wait:调用wait使线程挂起,直到线程得到了notify或notifyAll消息,线程才会进入就绪状态。
使你可以等待某个条件发生变化,而改变这个条件超出了当前方法的控制能力。
线程的执行被挂起,对象上的锁被释放。意味着另一个任务可以获得这个锁。
因此在该对象中的其他synchronized方法可以在wait期间被调用。
yield:相当于:我的工作已经做的差不多了,可以让给别的线程使用CPU了。
当调用yield时,你也是在建议具有相同优先级的其他线程可以运行。
对于任何重要的控制或在调整应用时,都不能依赖于yield。
yield并不意味着退出和暂停,只是,告诉线程调度如果有人需要,可以先拿去,我过会再执行,没人需要,我继续执行
调用yield的时候锁并没有被释放。
interrupt:中断线程。
Thread类包含interrupt()方法,因此你可以中止被阻塞的任务。
这个方法将设置线程的中断状态。
如果一个线程已经被阻塞,或者试图执行一个阻塞操作,那么设置这个线程的中断状态将抛出InterruptedException。
当抛出该异常或者该任何调用Thread.interrupted()时,中断状态将复位。
你在Executor上调用shutdownNow(),那么它将发送一个interrupt()调用给他启动的所有线程。
⑹ java 线程传递参数
线程对象A用的方法中建立进程对象B的饮用,之后直接调用B的成员变量,这一成员变量可以在B中通过方法修改,这样应该可以吧。
⑺ JAVA多线程的时候 2个线程同时使用一个参数 怎么让他们各用个的
把公共的这个变量也放到线程的run方法里面定义就行了,不明白可以把详细代码贴上上,帮你加
⑻ Java中线程Thread有没有带参数的run方法呀
没有,线程中没有带参数的run方法。
如果想要实现带参数的run方法:
1、定义线程内变量内
2、在继承thread的时候,增容加带参数的构造函数,初始化线程内变量
3、在run方法操作线程内变量,以达到类似传参的效果。
示例:
classMyThreadextendsThread{
inta=0;//定义线程内变量
publicMyThread(inta){//定义带参数的构造函数,达到初始化线程内变量的值
this.a=a;
}
@Override
publicvoidrun(){
this.a++;//线程内变量自增
}
}
⑼ java线程传入参数要怎么理解
这样传入的店员变量是同一个对象,不然生产者消费者里都自己new的话 不是一个店员无法根据柜台商品数去判断是否等待或唤醒
⑽ java线程里面Thread thread=new Thread(file,"aaa"),这里面第二个参数什么意思啊
线程名称,这个可以自定义,如果不写的话现正也会自己定义一个名字(thread-1),你也可以在run方法里使用thread.getName()来查看。