关于java的线程问题(有可用答案就结贴)
初学者,不要见笑,不废话,三个类:
public class Operate //调用线程的主函数
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
int bean = input.nextInt();
int machine = input.nextInt();
PrintBean pb = new PrintBean(machine);
Lock lock = new ReentrantLock();
for(int i=0;i<bean;i++){
new CreateArray(machine, lock).start();
}
try
{
Thread.sleep(1000);
}
catch (InterruptedException e)
{
e.printStackTrace();
}
pb.printBean();
}
}
public class CreateArray extends Thread //线程类
{
private int machine;
private Lock lock;
public CreateArray(){
}
public CreateArray(int machine,Lock lock)
{
this.machine = machine;
this.lock=lock;
}
public int createNumber(){
return (int)(Math.random()*2);
}
public int createMachine(){
int right=0;
for(int i=0;i<machine;i++){
int x = createNumber();
if(x==1){
right++;
}
}
return right;
}
public void run(){
lock.lock();
PrintBean pb = new PrintBean();
pb.operateArray(createMachine());
lock.unlock();
}
}
public class PrintBean //产生数组的类
{
int[] sorts;
public PrintBean(){
}
public PrintBean(int machine){
sorts = new int[machine];
}
public void operateArray(int x){
sorts[x-1]++; //跟了下到这里报nullpoint错
}
public void printBean(){
System.out.println(Arrays.toString(sorts));
}
}
先还奇怪为什么会报nullpoint错,后来debug发现到这里进了thread.class的方法
private void dispatchUncaughtException(Throwable e) {
getUncaughtExceptionHandler().uncaughtException(this, e);
}
很奇怪为什么会进这个方法,网上查了下资料很少,说什么无法捕获的错误,云里雾里,忘高手指点
public class Operate //调用线程的主函数
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
int bean = input.nextInt();
int machine = input.nextInt();
PrintBean pb = new PrintBean(machine);
Lock lock = new ReentrantLock();
for(int i=0;i<bean;i++){
new CreateArray(machine, lock).start();
}
try
{
Thread.sleep(1000);
}
catch (InterruptedException e)
{
e.printStackTrace();
}
pb.printBean();
}
}
public class CreateArray extends Thread //线程类
{
private int machine;
private Lock lock;
public CreateArray(){
}
public CreateArray(int machine,Lock lock)
{
this.machine = machine;
this.lock=lock;
}
public int createNumber(){
return (int)(Math.random()*2);
}
public int createMachine(){
int right=0;
for(int i=0;i<machine;i++){
int x = createNumber();
if(x==1){
right++;
}
}
return right;
}
public void run(){
lock.lock();
PrintBean pb = new PrintBean();
pb.operateArray(createMachine());
lock.unlock();
}
}
public class PrintBean //产生数组的类
{
int[] sorts;
public PrintBean(){
}
public PrintBean(int machine){
sorts = new int[machine];
}
public void operateArray(int x){
sorts[x-1]++; //跟了下到这里报nullpoint错
}
public void printBean(){
System.out.println(Arrays.toString(sorts));
}
}
先还奇怪为什么会报nullpoint错,后来debug发现到这里进了thread.class的方法
private void dispatchUncaughtException(Throwable e) {
getUncaughtExceptionHandler().uncaughtException(this, e);
}
很奇怪为什么会进这个方法,网上查了下资料很少,说什么无法捕获的错误,云里雾里,忘高手指点
...全文
相关推荐
个人总结40个Java多线程面试问题和答案
Java多线程面试问题和答案总结Java多线程是一种高级的编程技术,能够充分发挥多核CPU的优势,防止阻塞,简化模型建立,提高程序的效率和可维护性。
92道Java多线程并发面试题含答案(很全)
Java多线程是指在一个程序中同时执行多个线程,每个线程都有自己独立的执行路径。在多线程中,程序的执行可以同时进行多个任务,从而提高系统的资源利用率和响应性能。
JAVA多线程练习题答案。
JAVA多线程练习题答案详解在本文中,我们将对 JAVA 多线程练习题的答案进行详细的解释和分析。
雍俊海 Java程序设计教程 课后答案
在雍俊海的《Java程序设计教程》第二版的课后答案中,学生可以通过查看提供的代码,了解各种编程问题的解决方案,学习如何组织和优化代码,同时加深对Java语言特性和编程技巧的理解。
java多线程面试题和答案
在Java编程领域,多线程是一项至关重要的技术,特别是在开发高效、响应迅速的应用程序时。以下是一些关于Java多线程的面试题及其答案,涵盖了基础概念、并发控制、线程安全以及性能优化等方面。1.


Java SE
