‘壹’ java多线程执行异常
多线程不是多个线程一起执行,多线程实际上是多个线程之间轮流执行的,就是将一个时间段分成若干个时间片,每个线程只运行一个时间片,由于时间片极短,而且电脑运行极快,线程之间切换也极快,几乎可以看做是并行运行的,也就是说可以看成是同时运行的.但实际却不是的同时运行的.你的循环次数太少,执行的时间小于时间片,所以才不会交替出现,你可以把i改为100试下
‘贰’ java多线程中出现的异常分别有哪些
是线程中的方法,会抛出异常,如
public final void join() throws InterruptedException
除了线程的方法,线程里面自己写的代码逻辑,也会发生异常的。
‘叁’ java多线程问题
Thread.interrupt(); 这里的线程中断是针对wiat 的状态下才有效果的
‘肆’ java线程异常
线程抛出的异常,只能有那个线程捕获,其他线程是无法捕获的。你的线程池对象在主线程中,主线程无法捕获其他线程的异常。你可以使用线程间通信的方式,通知主线程,发生了异常。
‘伍’ linux上执行java多线程程序异常
碰到这种错误, 一般是
安装的 JDK 和Linux系统版本或者动态链接库有差异;
或者, 你发现了 JDK7.0虚拟机的一个BUG, 可以报告给 oracle了
‘陆’ java线程发生异常时怎么重新启动这个线程
1.主线程写个循环3次的循环
2.循环体内运行线程,运行完以后调用wait()等待
3.线程在运行,如果出异常notifyAll()唤醒主线程继续循环
‘柒’ java多线程错误
因为你的 threads 类是内部类,而且不是静态的,在 new threads() 的时候上下文中必须有 shiyan501 这个类的一个实例。所以 new threads() 这条语句不能出现在静态方法中,比如 static 的 main 。
修改方法有两种:
让 threads 类变成静态的
threads 类前面加上 static 修饰符
把 threads 类拿到 shiyan501 类的外面
把 new threads() 语句放到一个实例方法中,比如变成下面这样子:
importjava.util.Date;
publicclassshiyan501{
classthreadsextendsThread{
publicthreads(inta){
inti=a;
System.out.println("创建进程:"+i);
}
publicvoidrun(){
Datedate=newDate();
}
}
publicthreadsstartAThread(inti){
//这是一个实例方法,所以可以调佣newthreads()
threadst=newthreads(i);
t.start();
returnt;
}
publicstaticvoidmain(String[]args){
shiyan501sy=newshiyan501();
threadsa=sy.startAThread(1);
threadsb=sy.startAThread(2);
threadsc=sy.startAThread(3);
}
}
但从你的程序来看,1.1 ,也就是把 threads 声明成静态是最恰当的做法。
‘捌’ 使用Java thread 多线程会有什么严重的错误
会有各种错误吧.
比如,如果一个线程正在迭代某非线程安全集合.
另外一个集合却修改了这个集合.
则会跑出modify什么的.
如果一个线程取了某个对象做操作.另外一个线程却将对象里的内容置空,则会空指针
再比如说.一个线程需要判断某个集合是否为空.如果为空则new一个新的放进去,并在集合里添加一个元素.当他判断到这个集合为空了之后,在new集合的时候,另外一个线程判空,new 集合,并添加了一个元素,
那么第一个线程继续操作,会把第二个线程的元素给抹杀掉.数据丢失.
这样的例子有很多很多.
程序崩溃是轻的.
数据异常会让人崩溃.运行一个程序,每次都得到不同的结果你会是什么表情....
楼上的也说了,线程不宜过多.这是真的.毕竟,线程都是要占用cpu资源.一万个人吃一块冰糕....这个冰糕肯定瞬间就被吃没了.而且,这一万个人基本都吃不着.
‘玖’ java爬虫采用多线程,数据库连接多了就报异常
可以通过测试对错误原因进行排查,如果连接少量时不出问题,那就是连接量超出了某一数值出现异常,可以查看数据库的链接上限,如果是连接上限原因,可以尝试上调上限或者降低连接数量